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

Optymalizacja indeksu tabeli MySQL

Cóż, przydałby się indeks w kolumnie sygnatury czasowej i identyfikatorze użytkownika. Musisz być w stanie odczytać wynik instrukcji EXPLAIN.

Przejdź do MySQL i wykonaj następujące czynności:

EXPLAIN SELECT timestamp, username, [a few more] FROM log 
WHERE timestamp  BETWEEN '2012-03-30 08:00:00' AND '2012-03-30 16:00:00' 
AND username='XX' 

To pokazuje plan, którego MySQL używa do wykonania zapytania. Pojawi się kolumna o nazwie klucz. Wskazuje to, jakiego indeksu MySQL używa w zapytaniu. Podejrzewam, że zobaczysz tam WSZYSTKO, co oznacza, że ​​MySQL skanuje tabelę od góry do dołu, dopasowując każdy wiersz do klauzuli where. Teraz utwórz indeks w kolumnach sygnatury czasowej i identyfikatora użytkownika. Uruchom ponownie instrukcję EXPLAIN. Powinieneś zobaczyć utworzony indeks w kolumnie klucza.

Jeśli MySQL używa indeksu, Twoje zapytanie powinno być znacznie szybsze. Pamiętaj tylko, aby nie przesadzać. Indeksy spowalniają wstawianie, aktualizowanie i usuwanie. Kiedy wstawiasz nowy wiersz do tabeli, a w tabeli znajdują się trzy indeksy, nowy wiersz musi zapisać 3 wartości do trzech różnych indeksów. Więc jest to miecz obosieczny.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak utworzyć wypełniony obraz Docker MySQL w czasie kompilacji?

  2. MySql Transpozycja wiersza do kolumny i kolumny do wiersza

  3. Nieprawidłowy adres URL podczas wykonywania zapytania mysql (niezgodny z instrukcjami lokalizacji nagłówka php)

  4. Zapytanie SUMA dla dwóch pól w dwóch różnych tabelach

  5. MYSQL wyodrębnia elementy json, w których zawiera json