Всем известно, что в таблицах, которые используют InnoDB в качестве движка, такие запросы SELECT COUNT(*) FROM mytable
очень неточны и очень медленны, особенно когда таблица становится больше и когда во время выполнения этого запроса происходят постоянные вставки / удаления строк.
Как я понял, InnoDB не сохраняет количество строк во внутренней переменной, что является причиной этой проблемы.
Мой вопрос: почему это так? Будет ли так сложно хранить такую информацию? Это важная информация, которую нужно знать во многих ситуациях. Единственная трудность, которую я вижу, если такой внутренний счет будет реализован, - это когда транзакции задействованы: если транзакция не совершена, вы считаете количество строк, вставленных ею, или нет?
PS: я не специалист по БД, я просто тот, у кого MySQL простое хобби. Так что, если я просто спросил что-то глупое, не будь чрезмерно критичен: D.
SELECT COUNT(*) FROM ...
запросы точны. Если вы предпочитаете, phpMyAdmin можно настроить так, чтобы он всегда использовал точное количество строк за счет скорости. Дополнительная информация: stackoverflow.com/questions/11926259/…