Autor Zpráva
WanTo
Profil
Mám pár dotazů k MySQL. Nepředpokládám sice, že mi na všechno odpovíte, ale snad mi pomůžete alespoň s nečím.

1. Co znamená, když je pole označeno jako INDEX nebo jako FULLTEXT?
2. Jaký je rozdíl mezi PRIMARY a UNIQUE kromě toho, že PRIMARY může být jen jeden sloupec?
3. Jak se liší jednotlivé typy tabulek? Které je pro co výhodné používat a které zase ne?
Kajman_
Profil *
1. a 2.
http://www.linuxsoft.cz/article.php?id_article=912
http://www.linuxsoft.cz/article.php?id_article=914

3.
http://www.linuxsoft.cz/article.php?id_article=968
http://www.linuxsoft.cz/article.php?id_article=979
Hugo
Profil
1) pokud máš pole označené jako fulltext můžeš použít fulltextové vyhledávání. Index ti zjednodušeně řečeno zrychlí vyhledávání v tabulce, ale zpomalí ukládání.

2) Primární klíč slouží k jednoznačné identifikaci sloupce. U MySQL je taky důležitý fakt, že sloupci s primárním klíčem lze nastavit auto_increment.

3) MyISAM - asi nejpoužívanější u mysql, jsou rychlé, ale neumožňují transakce
InnoDB - umožňují transakce, jsou rychlejší v případě, že do tabulky častěji data vkládáš

Pak jsou ještě další typy (heap, memory, merge atd.), ale ty se používají jen ve spec. případech. Vše je popsáno v manuálu.
thingwath
Profil
INDEX značí použití indexu, což podstatně zrychluje vyhledávání podle daného sloupce. PRIMARY označuje primární klíč, což je nějaká hodnota, která dokáže jednoznačně určit záznam, používá se pro odkazování z jiných tabulek (viz FOREIGN KEY). UNIQUE je jen omezení na jedinečnost záznamu v tabulce.

Jak se liší tabulky je popsáno v manuálu :-) Liší se třeba tím co všechno podporují, MyISAM třeba nezvládají transakce (narozdíl od InnoDB), výměnou za to by údajně měly být rychlejší.
WanTo
Profil
Moc díky.

Ještě mám jeden dotaz (možná i problém): Označil jsem login v tabulce uživatelů jako UNIQUE a zároveň jako INDEX. Teď mi phpMyAdmin píše: "Sloupec `login` by neměl být zároveň obsažen v PRIMARY a UNIQUE klíči". Nerozumím tomu, vždyť jsem jako PRIMARY označil sloupec ID.

Může toto způsobit nějaké problémy?
Hugo
Profil
Použít na tabulku index a unique je zbytečné. Pokdu nevíš co jednotlivé indexy znamenají, tak je nepoužívej. Nejdřív si přečti v manuálu nebo někde jak pracují. Jinak se ti aplikace může podstatně zpomalit.
Peca
Profil
Jenom malá poznámka k FOREIGN KEY - mám pocit, že to MySql nepodporuje, ignoruje ho.
thingwath
Profil
Já taky, ale nebyl jsem si tím jistý :-) Tedy - u MyISAM, myslím, že InnoDB by to umět mohla.
Hugo
Profil
thingwath

Máš pravdu InnoDB to umí
http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints. html
Toto téma je uzamčeno. Odpověď nelze zaslat.

0