Autor Zpráva
llook
Profil
Nevíte někdo, jaký je nějaký rozdíl mezi PRIMARY KEY a UNIQUE?
Honza Hučín
Profil
Podle mého laického názoru znamená PRIMARY KEY u pole, že se stává indexovým klíčem pro danou tabulku. UNIQUE pouze hlídá, že se v poli nevyskytne dvakrát stejná hodnota, ale s indexováním to nic společného nemá.
Důvod, k čemu slouží index v databázové tabulce, a jak to funguje, by mě ale taky zajímal.
Radek Hulán
Profil *
prohledávání neixdexované tabulky je šíleně pomalé... Pokud se ale dělá SELECT .. WHERE a existuje na WHERE klíč (PRIMARY, UNIQUE, KEY), tak se použije..
SuE
Profil
index pomáhá vyhledávání - zrychluje ho. Databázový engine si indexy pro jednotlivé tabulky udržuje setříděné zvlášť a automaticky je aktualizuje při změnách. Třeba když máš v db jako index číslo zakázky, tak on jde na tu zakázku přes pomocnou tabulku indexů a nedělá fulltext hledání. Index nemusí být unikátní a může být i složený z více polí tabulky (nevím ale jak je to u mysql ) To hledání přes index je ve větší db o hodně rychlejší, hlavně když hledáš ve více tabulkách (join myslím v mysql) . Docela se vyplatí si ty indexy rozmyslet a zadat je - třeba několik pro tu tabulku, pak samozřejmě nejsou unikátní. Unikátní je většinou vyžadován jen primary key (index)
Někdy, když není primární klíč zadán, tak si ho db vyrobí sama (třeba access, někdy se tomu říká serial - je to vlastně pořadové číslo záznamu) . Což je docela na nic a třeb u tabulky výrobků by rozhodně užitečnějšáí bylo číslo výrobku.
To, jestli se hledá podle indexu nebo fulltext si řídí db sama - koukne, jestli je to index, když jo, fajn, jdem na to podle indexu.

unique při výběru by mohl znamenat (opět nevím jak v mysql) , že chceš jen unikátní výskyty něčeho, co vybíráš. Třeba máš nějaký příznak u součástky - řekněme norma, která není v extra tabulce jako číselník, a chceš zjistit, jaké normy se ti v db vyskytují, tak si je dáš vybrat select unique norma from .. bla bla a on vybere jen unikátní vyskyty z té tabulky, ačkoliv se každé číslo normy může vyskytovat třeba 100 krát, tak ti ho dá jen jednou

Tohle je hodně obecně, ne pro mysql přímo.
llook
Profil
Myslím, že už je mi to jasný. Takže pokud u nějakého pole pouze potřebuji unikátnost, pak použiju UNIQUE, ale pokud podle něj chci i hledat, potom PRIMARY KEY.
Díky všem za odpovědi.
Toto téma je uzamčeno. Odpověď nelze zaslat.