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

wydajność licznika mysql

spójrz na następujące posty na blogu:

1) COUNT(***) vs COUNT(col)
2) Łatwe wskazówki dotyczące wydajności MySQL
3) Szybki licznik (*) dla InnoDB

przy okazji, jakiego silnika używasz?

EDYTOWANO: O technice przyspieszania liczenia, kiedy musisz tylko wiedzieć, czy jest jakaś liczba rzędów. Przepraszam, po prostu myliłem się z moim zapytaniem. Tak więc, gdy trzeba tylko wiedzieć, czy istnieje m.in. 300 wierszy według określonego warunku, możesz wypróbować podzapytanie:

select count(*) FROM
( select 1 FROM _table_ WHERE _conditions_ LIMIT 300 ) AS result

najpierw minimalizujesz zestaw wyników, a następnie liczysz wynik; nadal będzie skanować zbiór wyników, ale możesz go ograniczyć (raz jeszcze działa, gdy pytanie do DB brzmi "jest tutaj więcej lub mniej niż 300 wierszy), a jeśli DB zawiera więcej niż 300 wierszy, które spełniają warunek, że zapytanie jest szybsze

Wyniki testów (moja tabela ma 6,7 ​​mln wierszy):

1) SELECT count(*) FROM _table_ WHERE START_DATE > '2011-02-01'
zwraca 4,2 mln przez 65,4 sekundy

2) SELECT count(*) FROM ( select 1 FROM _table_ WHERE START_DATE > '2011-02-01' LIMIT 100 ) AS result
zwraca 100 przez 0,03 sekundy

Poniżej znajduje się wynik zapytania wyjaśniającego, aby zobaczyć, co się tam dzieje:

EXPLAIN SELECT count(*) FROM ( select 1 FROM _table_ WHERE START_DATE > '2011-02-01' LIMIT 100 ) AS result



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. AKTUALIZACJA SQL z LIKE

  2. Tekst w języku bengalskim nie jest wyświetlany w pliku CSV Unicode

  3. Użyj parametru w funkcji przekazanej do google.setOnLoadCallback();

  4. InnoDB Tabela jest pełna błąd

  5. Klucze obce MySQL na sobie