Autor | Zpráva | ||
---|---|---|---|
Johannn Profil * |
#1 · Zasláno: 4. 2. 2014, 19:43:55
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 |
#2 · Zasláno: 4. 2. 2014, 19:54:08
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 A, C; A, D; A, C, D 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 * |
#3 · Zasláno: 4. 2. 2014, 19:55:09 · Upravil/a: Johannn
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 |
#4 · Zasláno: 4. 2. 2014, 20:44:42
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. |
||
Časová prodleva: 12 let
|
0