Obecně platí, že filtry výběru mohou používat indexy na user_id
nebo activity_type_id
nebo obojí (v libovolném pořadí).
Operace objednávky může být schopna použít filtr na created_at
.
Je pravděpodobné, že pro tento dotaz bude složený index na (user_id, activity_type_id)
by poskytlo nejlepší výsledek za předpokladu, že jej MySQL skutečně dokáže využít. Pokud se tak nestane, bude pravděpodobně lepší indexovat user_id
než activity_type_id
protože pravděpodobně poskytuje lepší selektivitu. Jedním z důvodů, proč si to myslet, je, že pokud by index používal index na activity_type_id
, byly by k dispozici 4 podsekce indexu ke skenování , ve srovnání s pouze jednou podsekcí pro skenování, pokud používá index na user_id
sám.
Pokus spolehnout se na index pro pořadí řazení pravděpodobně znamená úplné prohledání tabulky, takže je méně pravděpodobné, že bude přínosný. Nevytvářel bych index na created_at
na podporu tohoto dotazu; mohou existovat další dotazy, kde by to bylo přínosné.