Autor Zpráva
pe3k
Profil *
Zdravim,
pri vytvárani indexu nad viacerými stlpcami je dôležité zadané poradie ?, a nasledne volanie v sql príkaze v tomto poradí ? alebo moze prikaz mat "prehadzane" podmienky ...

a ešte jedna otázka:
ak je 1 (unikatny) index nad 5 stlpcami, a v sql príkaze v podmienke použijem len 1-2 stlpce, ide takýto dotaz cez ten index alebo nie ? (alebo treba vytvoriť aj "samostatné" indexy nad jednotlivimy stlpcami)
juriad
Profil
Složený index je zároveň indexem nad svým prefixem: složený index na sloupci (A,B,C) je indexem nad (A,B,C), (A,B), (A); nikoli už jiné varianty.
Toto myslím odpovídá na většinu tvých otázek.

pri vytvárani indexu nad viacerými stlpcami je dôležité zadané poradie ?
ano

a nasledne volanie v sql príkaze v tomto poradí ?
nemělo by, viz následující, ale proč to neusnadnit, SQL může být pak čitelnější (podmínky jsou vždy ve stálém pořadí)

alebo moze prikaz mat "prehadzane" podmienky ...
slušná* databáze si to dokáže odvodit, většinou existuje nějaký optimalizér, který převede SQL do nějakého matematičtějšího jazyka, nad kterým provádí ekvivalentní úpravy s odhadem složitosti

ak je 1 (unikatny) index nad 5 stlpcami, a v sql príkaze v podmienke použijem len 1-2 stlpce, ide takýto dotaz cez ten index alebo nie ?
jen pokud jsou to první dva sloupce toho indexu nad pěti sloupci

alebo treba vytvoriť aj "samostatné" indexy nad jednotlivimy stlpcami
je to třeba, pokud by to nebyly první sloupce, ale může se vyplatit vytvořit pro ty dva sloupce zase složený index

Teoreticky nejmenší možný počet indexů (tak aby všechny dotazy šly přes indexy) nad tabulkou o 5 sloupcích (ABCDE), kde dotaz může mít podmínku nad libovolným počtem sloupců je schéma:
(A,B,C,D,E), (B,C,D,E), (C,D,E), (D,E), (E)
V praxi ale může být drahé (pomalé) provádět insert, update, delete tabulky s mnoha indexy, protože se nemění jen data, ale ještě se přepočítává několik indexů.

* otázkou je, nakolik slušnou datábází mysql je, neuvedl jsi jí, proto popisuji teoreticky. Ještě další otázkou je, zda řešit indexy a složitost dotazů, pokud nemáš změřeno, že tento dotaz je pomalý (a používá se často).

Před otazníkem se nepíše mezera
pe3k
Profil *
Ďakujem velmi pekne za odpoveď.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: