Mysql
 sql >> база данни >  >> RDS >> Mysql

Какво трябва да се индексира, за да се подобри ефективността?

По принцип филтрите за избор могат да използват индекси на user_id или activity_type_id или и двете (в който и да е ред).

Операцията за подреждане може да може да използва филтър за created_at .

Вероятно за тази заявка е съставен индекс на (user_id, activity_type_id) ще даде най-добрия резултат, ако приемем, че MySQL действително може да го използва. Ако не успеете, вероятно ще бъде по-добре да индексирате user_id отколкото activity_type_id защото е вероятно да осигури по-добра селективност. Една от причините да мислим така е, че ще има 4 подсекции на индекса за сканиране, ако използва индекс на activity_type_id , в сравнение само с един подсекция за сканиране, ако използва индекс на user_id сам.

Опитът да се разчита на индекс за реда на сортиране вероятно ще означава пълно сканиране на таблица, така че е по-малко вероятно да бъде от полза. Не бих създал индекс на created_at за поддържане на това запитване; може да има други запитвания, където би било от полза.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Имам нужда от помощ за завършване на това динамично падащо меню от 3 нива

  2. InnoDB има ли статични таблици?

  3. mysql към csv без използване на INTO OUTFILE на mysql

  4. Кога трябва да се изградят отново индексите на базата данни?

  5. Опитвате се да качите потребителски идентификатор в базата данни, сесията връща потребителския идентификатор като нула?