Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL:Най-бързият начин за преброяване на броя на редовете

Когато COUNT(*) той взема в брой индекси на колони, така че ще бъде най-добрият резултат. Mysql с MyISAM двигателят всъщност съхранява броя на редовете, той не брои всички редове всеки път, когато се опитате да преброите всички редове. (въз основа на колоната на първичния ключ)

Използването на PHP за броене на редове не е много умно, защото трябва да изпращате данни от mysql към php. Защо да го правите, когато можете да постигнете същото от страна на mysql?

Ако COUNT(*) е бавен, трябва да изпълните EXPLAIN на заявката и проверете дали индексите наистина се използват и къде трябва да бъдат добавени.

Следното не е най-бързото начин, но има случай, когато COUNT(*) всъщност не пасва - когато започнете да групирате резултатите, можете да срещнете проблем, където COUNT всъщност не отчита всички редове.

Решението е SQL_CALC_FOUND_ROWS . Това обикновено се използва, когато избирате редове, но все пак трябва да знаете общия брой редове (например за пейджинг). Когато избирате редове с данни, просто добавете SQL_CALC_FOUND_ROWS ключова дума след SELECT:

SELECT SQL_CALC_FOUND_ROWS [needed fields or *] FROM table LIMIT 20 OFFSET 0;

След като сте избрали необходимите редове, можете да получите броя с тази единична заявка:

SELECT FOUND_ROWS();

FOUND_ROWS() трябва да се извика веднага след заявката за избор на данни.

В заключение, всичко всъщност се свежда до това колко записа имате и какво има в оператора WHERE. Наистина трябва да обърнете внимание на това как се използват индексите, когато има много редове (десетки хиляди, милиони и нагоре).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Мигриране на MySQL към PostgreSQL на AWS RDS, част 1

  2. Как да архивирате MySQL бази данни с помощта на AutoMySQLBackup

  3. ALTER TABLE за добавяне на съставен първичен ключ

  4. Как да получите записи от днес в MySQL

  5. Как да сравним две колони в MySQL