Ne, nebude.
Teoreticky index na (site, product, value, id)
má vše potřebné k vytvoření indexu na jakékoli podmnožině těchto polí (včetně indexů na (product, value, id)
a (value, id)
).
Sestavení indexu ze sekundárního indexu však není podporováno.
Nejprve MySQL
nepodporuje rychlé úplné skenování indexu (to znamená skenování indexu ve fyzickém pořadí, nikoli logickém), takže přístupová cesta k indexu je dražší než čtení tabulky. Pro InnoDB
to není problém , protože samotná tabulka je vždy seskupená.
Zadruhé, pořadí záznamů v těchto indexech je zcela odlišné, takže záznamy je třeba stejně třídit.
Hlavním problémem je však rychlost vytváření indexu v MySQL
spočívá v tom, že generuje objednávku na místě (stačí vkládat záznamy jeden po druhém do B-Tree
) namísto použití předřazeného zdroje. Jak zmínil @Daniel, rychlý vytváření indexu tento problém řeší. Je k dispozici jako plugin pro 5.1
a je předinstalovaný v 5.5
.