Autor Zpráva
Johannn
Profil *
Ahoj, mám větší db. (cca 1 mil záznamů) a potřebuji nad touto db filtrovat

Celkem nad max 6 sloupci, ale někdy třeba jen nad jedním.

Zajímalo by mě, jak má udělat index.
Zda stačí jeden, který bude nad 6 sloupci, tedy my_index(col1, col2, col3, ...)
nebo zda je lepší mít indexy pro všechny kombinace

tedy když budu fitrovat zrovna jen nad col1 a col3, tak aby se použil index, co má jen col_1, col3, nebo zda stačí použít my_index, kde je těch 6 sloupců

doufám, že jsem to dobře popsal
juriad
Profil
index nad sloupci A, B, C, D se použije
- optimálně pro dotazy s podmínkou na
A;   A, B;   A, B, C;   A, B, C, D
- neoptimálně (pomůže, ale nechytne se úplně) pro podmínku na:
A, C;   A, D;   A, C, D
- pro ostatní dotazy se nepoužije

Tedy z indexu se použije vždy jen prvních několik sloupců, pro které je definován. Záleží na pořadí sloupců v indexu.
Johannn
Profil *
aha díky


ještě 2 dotazy

1)záleží na pořadí u where?

tedy jestli je jedno zda napíši "where A=1 and B=2" nebo "where B=2 and A=1"


2)když budu mít u té tabulky join

a budu mít sloupce A B C D X

a dotaz
select ....
from table1
JOIN table2 ON table1.X = table2.X
WHERE A=1 and B=2 and C=3 and D=4

použije se správně index kde je ABCD? nebo je potřeba XABCD?

díky moc
Kajman
Profil
Johannn:
jestli je jedno zda napíši "where A=1 and B=2" nebo "where B=2 and A=1"
Bývá to jedno, plánovač zpravidla vytvoří stejný plán.

použije se správně index kde je ABCD?
To zjistíte příkazem explain. Tipuji, že se použije.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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