За разлика от MyISAM таблиците, таблиците InnoDB не следят колко реда съдържа таблицата.
Поради това единственият начин да разберете точния брой редове в таблица на InnoDB е да проверите всеки ред в таблицата и да натрупате брой. Следователно, на големи таблици InnoDB, извършване на SELECT COUNT(*) FROM innodb_table
заявката може да бъде много бавна, защото извършва пълно сканиране на таблицата, за да получи броя на редовете.
phpMyAdmin използва заявка като SHOW TABLE STATUS
за да получите приблизителен брой редове в таблицата от машината (InnoDB). Тъй като това е само приблизителна оценка, тя варира всеки път, когато я извикате, понякога вариациите могат да бъдат доста големи, а понякога са близки.
Ето една информативна публикация в блога относно COUNT(*) за InnoDB таблици от Percona.
Страницата с ръководство на MySQL за ПОКАЖЕТЕ СТАТУС НА ТАБЛИЦА гласи:
Броят на редовете. Някои системи за съхранение, като MyISAM, съхраняват точния брой. За други машини за съхранение, като InnoDB, тази стойност е приближение и може да варира от действителната стойност с до 40 до 50%. В такива случаи използвайте SELECT COUNT(*), за да получите точен брой.
Страницата на ограниченията на InnoDB навлиза в повече подробности:
SHOW TABLE STATUS не дава точни статистически данни за InnoDB таблици, с изключение на физическия размер, запазен от таблицата. Броят на редовете е само приблизителна оценка, използвана при SQL оптимизацията.
InnoDB не поддържа вътрешен брой редове в таблица, тъй като едновременните транзакции могат да „видят“ различен брой редове едновременно. За обработка на
SELECT COUNT(*) FROM t
оператор, InnoDB scansan индекс на таблицата, което отнема известно време, ако индексът не е изцяло в буферния пул. Ако вашата таблица не се променя често, използването на MySQL кеша на заявките е добро решение. За да получите бързо броене, трябва да използвате таблица с броячи, която създавате сами, и да оставите приложението си да го актуализира според вмъкванията и изтриванията, които прави. Ако приблизителният брой редове е достатъчен,SHOW TABLE STATUS
може да се използва. Вижте раздел 14.3.14.1, „Производство на InnoDB Съвети за настройка“ .