sql >> Databáze >  >> RDS >> Mysql

Co by mělo být indexováno pro zlepšení výkonu?

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é.



  1. jak vypočítat rozsahy v oracle

  2. Postgresql – Jak extrahuji první výskyt podřetězce v řetězci pomocí vzoru regulárního výrazu?

  3. Jak vytvořit kontingenční tabulku v Laravelu

  4. Jak zajistit, aby silverlight získal svá data z MySQL