Если вы думаете о кешировании строк, вы, вероятно, не должны, и вам, вероятно, это не нужно. Там является встроенный механизм
SHOW TABLE STATUS
Часть продукции этого запроса включает в себя:
Количество строк. Некоторые устройства хранения данных, такие как MyISAM, хранят точное число . Для других систем хранения, таких как InnoDB, это значение составляет в приближении и может варьироваться от фактического значения на целых 40 до 50%. В таких случаях используйте SELECT COUNT (*) для получения точного счета .
Значение строк NULL для таблиц в базе данных INFORMATION_SCHEMA.
Этот пункт также отвечает на ваш вопрос об эффективности SELECT COUNT (*) - на столах MyISAM это быстро, это не зависит от количества строк в таблице, так как внутренний счетчик используется.
Каким образом innodb отличается?
Innodb не сохраняет внутреннее количество строк в таблице, так как одновременно транзакции могут «видеть» разное количество строк в то же время. Чтобы обработать инструкцию SELECT COUNT (*) FROM t, InnoDB сканирует индекс таблицы , что занимает некоторое время, если индекс не полностью находится в буферном пуле. Если ваша таблица не меняется часто, использование кэша запросов MySQL является хорошим решением. Чтобы получить быстрый счет, вы должны использовать созданный вами счетчик таблицы , и пусть ваше приложение обновит его в соответствии с вставками и удалит его. Если достаточно приблизительного ряда , можно использовать SHOW TABLE STATUS.
Обратите внимание, что в этой части документации говорится о кешировании счета. Но вы заметите, что если есть индекс, который полностью покрывает таблицу, запрос count (*) остается быстрым. Поскольку у вас, естественно, есть первичный ключ и что первичный ключ, вероятно, будет в буфере, по крайней мере, частично влияние производительности будет небрежным.
Обратите внимание, что история совершенно другая в другой популярной базе данных с открытым исходным кодом Postgresql. Там count (*) замедляется пропорционально размеру таблицы. К счастью, в mysql это не так уж плохо.
В заключение: поскольку количество кешированных строк приблизительное, вы можете просто использовать статус таблицы шоу.
Насколько велики подсчеты? –
Существует только 2000 строк, поэтому я понимаю, что это не имеет большого значения в любом случае. Мне интересно, какая разница для больших размеров таблиц. – blazerunner44