Если вы используете таблицы MyISAM, производительность не ухудшается .MySQL кэширует количество строк в таблицах MyISAM.Вот почему он может мгновенно ответить COUNT (*).В этом случае MySQL просто прочитал бы число строк в таблице из сохраненного значения.
[EDIT]: из блога производительности MySQL:
Для InnoDB: Если выиметь запрос, подобный SELECT COUNT(*) FROM IMAGE WHERE USER_ID=5
, этот запрос будет выполнен одинаково как для таблиц MyISAM, так и для таблиц Innodb при выполнении сканирования индекса ярости.Это может быть быстрее или медленнее как для MyISAM, так и для Innodb в зависимости от различных условий.
В реальных приложениях гораздо больше запросов второго типа, чем первого, поэтому обычно это не такая плохая проблема, как может показаться.Как правило, подсчет количества строк необходим инструментам администратора, которые могут отображать его в статистике таблицы, он также может использоваться в статистике приложения, чтобы показать что-то вроде «У нас 123,345 пользователей, которые загрузили 1,334,656 изображений», но их обычно легко удалить.,
Итак, помните, что Innodb работает медленно для запросов ALL COUNT (), но только для очень специфического случая запроса COUNT () без предложения WHERE.
Также интересно читать для вас: