Autor | Zpráva | ||
---|---|---|---|
hugo123 Profil * |
#1 · Zasláno: 14. 11. 2014, 21:38:09
Ahojte,
mam takuto jednoduchu tabulku: id, dopyt (varchar 255), pocet. Ide o to, ze si pamatam vyhladavacie dopyty a ich pocetnost. Teraz chcem pre kazde pismeno abecedy napriklad: dopyt LIKE 'A%' vypisat vsetky vyrazy zacinajuce na A, ale zoradene podla najvyssej pocetnosti. Viete mi prosim poradit ako toto co najefektivnejsie spravit? Ako mam prosim zvolit indexy? Vopred dakujem velmi pekne. hugo123 |
||
lionel messi Profil |
hugo123:
„Ako mam prosim zvolit indexy?“ V tomto prípade by som dal indexy 2, konkrétne (dopyt) a (pocet). Vychádzam z článku: Jak psát kód: Databázové indexy vytvářejte při psaní dotazů, profíci možno budú mať iný názor. |
||
hugo123 Profil * |
#3 · Zasláno: 14. 11. 2014, 21:54:38
lionel messi:
dakujem, a mam to dat ako 2 samostatne indexy, alebo ako jeden dvojity index? |
||
lionel messi Profil |
#4 · Zasláno: 14. 11. 2014, 21:57:14
hugo123:
„mam to dat ako 2 samostatne indexy, alebo ako jeden dvojity index?“ Prikláňam sa k dvom samostatným, ešte by som počkal na vyjadrenie niektorého z expertov fóra, nech mi to potvrdí, som len amatér, ale z odkázaného článku mi to tak vyšlo. |
||
Tori Profil |
hugo123:
„chcem pre kazde pismeno abecedy napriklad: dopyt LIKE 'A%' vypisat vsetky vyrazy zacinajuce na A, ale zoradene podla najvyssej pocetnosti.“ Pokud budete tento dotaz provádět často, tak bych přidala další sloupec typu CHAR(2) , kde bude počáteční písmeno. A index na tomto sloupci. Pak použijete snadno dotazy typu SELECT ... WHERE pismeno = "A" nebo SELECT pismeno, COUNT(*) AS pocet ... GROUP BY pismeno ORDER BY pocet DESC , bude to o dost rychlejší než LIKE. Je potřeba nastavit tomuto sloupci správné porovnávání (utf8_slovak_ci ), aby se rozlišovaly S a Š apod.
|
||
hugo123 Profil * |
#6 · Zasláno: 14. 11. 2014, 22:44:46
Tori:
Ok, takze potom dam iba jeden index na stlpec zaciatocneho pismena? Uz ziadny iny? |
||
Tori Profil |
#7 · Zasláno: 14. 11. 2014, 23:17:44
Asi bych dala jeden index přes oba sloupce - začáteční písmeno + počet, v tomto pořadí. Ale nejsem si stopro jistá, musela bych si vygenerovat pár tisíc záznamů a vyzkoušet to (
explain select... ).
|
||
Časová prodleva: 9 let
|
0