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

Powolne zapytanie MySQL

Po prostu prosisz o dwie kolumny w zapytaniu, aby indeksy mogły/powinny się tam znaleźć:

  • DataGodzina
  • Czas wczytywania

Innym sposobem na przyspieszenie zapytania może być podzielenie pola DateTime na dwie części:datę i godzinę.
W ten sposób db może grupować bezpośrednio na polu daty zamiast obliczania DATE(...).

EDYTOWANO:
Jeśli wolisz używać wyzwalacza, utwórz nową kolumnę (DATE) i nazwij ją newdate i spróbuj z tym (nie mogę teraz sprawdzić, czy jest poprawne):

CREATE TRIGGER upd_check BEFORE INSERT ON SpeedMonitor
FOR EACH ROW
BEGIN
  SET NEW.newdate=DATE(NEW.DateTime);
END

PONOWNIE EDYTOWANE:
Właśnie utworzyłem bazę danych z tą samą tabelą speedmonitor wypełnioną około 900 000 rekordów.
Następnie uruchamiam zapytanie SELECT newdate,AVG(LoadTime) loadtime FROM speedmonitor GROUP BY newdate i zajęło to około 100s!!
Usunięcie indeksu z pola newdate (i wyczyszczenie pamięci podręcznej za pomocą RESETUJ PAMIĘĆ PODRĘCZNĄ ZAPYTANIA i STOŁY FLUSH ), to samo zapytanie zajęło 0,6 s!!!
Tylko dla porównania:zapytanie SELECT DATE(DateTime),AVG(LoadTime)loadtime FROM speedmonitor GROUP BY DATE(DateTime) zajęło 0,9 s.
Przypuszczam więc, że indeks w dniu newdate nie jest dobry:usuń go.
Zamierzam dodać tyle rekordów, ile będę mógł teraz i ponownie przetestować dwa zapytania.

KOŃCOWA EDYCJA:
Usuwanie indeksów z kolumn newdate i DateTime zawierających 8 mln rekordów na stole speedmonitor, oto wyniki:

  • wybieranie i grupowanie w kolumnie nowej daty:7,5 s
  • wybieranie i grupowanie w polu DATE(DateTime):13,7 s

Myślę, że to dobre przyspieszenie.
Czas zajmuje wykonanie zapytania w wierszu poleceń mysql.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaki jest najlepszy algorytm wyszukiwania dla PHP i MYSQL?

  2. Dlaczego nie skorzystać z wbudowanych użytkowników i uprawnień MySQL dla strony internetowej?

  3. Klucz obcy MySQL, nie można utworzyć tabeli (errno:150)

  4. JPA Zapisywanie błędnej daty w bazie danych MySQL

  5. Walidacja i wstawianie formularzy PHP za pomocą MySql