Autor | Zpráva | ||
---|---|---|---|
WanTo Profil |
#1 · Zasláno: 12. 3. 2006, 11:09:20
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 * |
#2 · Zasláno: 12. 3. 2006, 11:15:37
|
||
Hugo Profil |
#3 · Zasláno: 12. 3. 2006, 11:17:48
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 |
#4 · Zasláno: 12. 3. 2006, 11:20:01
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 |
#5 · Zasláno: 12. 3. 2006, 11:22:52
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 |
#6 · Zasláno: 12. 3. 2006, 11:28:09
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 |
#7 · Zasláno: 12. 3. 2006, 11:35:41
Jenom malá poznámka k FOREIGN KEY - mám pocit, že to MySql nepodporuje, ignoruje ho.
|
||
thingwath Profil |
#8 · Zasláno: 12. 3. 2006, 11:36:48 · Upravil/a: thingwath
Já taky, ale nebyl jsem si tím jistý :-) Tedy - u MyISAM, myslím, že InnoDB by to umět mohla.
|
||
Hugo Profil |
#9 · Zasláno: 12. 3. 2006, 12:03:06
thingwath
Máš pravdu InnoDB to umí http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints. html |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0