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

zoptymalizuj zapytanie licznika mysql

Jeśli mysql musi liczyć 11 milionów wierszy, tak naprawdę nie ma zbyt dużego sposobu na przyspieszenie prostego liczenia. Przynajmniej nie po to, by osiągnąć prędkość poniżej 1 sekundy. Powinieneś przemyśleć, jak liczysz. Kilka pomysłów:

  1. Dodaj do tabeli pole automatycznego przyrostu. Wygląda na to, że nie usunąłbyś z tabeli, więc możesz użyć prostej matematyki, aby znaleźć liczbę rekordów. Wybierz minimalną liczbę automatycznego przyrostu dla początkowej wcześniejszej daty i maksymalną dla późniejszej daty i odejmij jeden od drugiego, aby uzyskać liczbę rekordów. Na przykład:

    SELECT min(incr_id) min_id FROM record_updates WHERE date_updated BETWEEN '2009-10-11 15:33:22' AND '2009-10-12 23:59:59';
    SELECT max(incr_id) max_id FROM record_updates WHERE date_updated > DATE_SUB(NOW(), INTERVAL 2 DAY);`
    
  2. Utwórz kolejną tabelę podsumowującą liczbę rekordów dla każdego dnia. Następnie możesz wysłać zapytanie do tej tabeli, aby uzyskać całkowitą liczbę rekordów. Byłoby tylko 365 rekordów na każdy rok. Jeśli chcesz uzyskać bardziej szczegółowe czasy, zapytaj tabelę podsumowań o pełne dni, a bieżącą tabelę tylko o liczbę rekordów dla dni rozpoczęcia i zakończenia. Następnie dodaj je wszystkie razem.

Jeśli dane się nie zmieniają, a na to wygląda, tabele podsumowań będą łatwe w utrzymaniu i aktualizowaniu. Znacznie przyspieszą działanie.



  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 automatycznie załadować MySQL podczas uruchamiania systemu OS X Yosemite / El Capitan?

  2. JOIN i GROUP_CONCAT z trzema tabelami

  3. Czy MySQL powinien mieć swoją strefę czasową ustawioną na UTC?

  4. Jak mogę filtrować znaki Emoji z moich danych wejściowych, aby móc zapisać w MySQL <5.5?

  5. Skrypt PHP do importowania danych csv do mysql