Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Co należy zindeksować, aby poprawić wydajność?

Ogólnie filtry wyboru mogą używać indeksów w user_id lub activity_type_id lub obie (w dowolnej kolejności).

Operacja zamawiania może być w stanie użyć filtra na created_at .

Jest prawdopodobne, że dla tego zapytania indeks złożony na (user_id, activity_type_id) dałby najlepszy wynik, zakładając, że MySQL może z niego skorzystać. Jeśli to się nie uda, prawdopodobnie lepiej będzie zindeksować user_id niż activity_type_id ponieważ prawdopodobnie zapewni lepszą selektywność. Jednym z powodów, dla których należy sądzić, że będą 4 podsekcje indeksu do przeskanowania, jeśli używa on indeksu activity_type_id , w porównaniu z tylko jedną podsekcją do przeskanowania, jeśli używa indeksu w user_id sam.

Próba polegania na indeksie dla porządku sortowania prawdopodobnie oznacza pełne skanowanie tabeli, więc jest mniej prawdopodobne, aby była korzystna. Nie utworzyłbym indeksu na created_at wesprzeć to zapytanie; mogą pojawić się inne zapytania, w których byłoby to korzystne.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kolejność MySQL według pól w Eloquent

  2. Doctrine 2 i tabela łączy wiele do wielu z dodatkowym polem

  3. Tabela tymczasowa w funkcjach zapisanych?

  4. Jak tworzyć indeksy na wielu kolumnach

  5. AWS Aurora MySQL bezserwerowy:jak połączyć się z MySQL Workbench