Это относится ко всем версиям MySQL. Как отмечали другие комментаторы, в InnoDB нет быстрого SELECT COUNT (*). Частично это объясняется тем, что InnoDB является многопрофильным, и он будет зависеть от контекста вашей транзакции, сколько строк должно быть в таблице.
Есть некоторые обходные пути:
1) Если вы не удалить, SELECT MAX (ID) должен возвращать правильное число строк.
2) Вместо того, чтобы удалять строки, вы можете архивировать их в таблицу удаленных строк (многие люди, похоже, хотят сохранить все в наши дни). Предполагая, что удаление является намного меньшим подмножеством неподвижного тока, вы можете вычесть count (*) из deleted_rows из SELECT max (id) из not_deleted.
3) Используйте триггеры. Это отстой для производительности.
Там довольно техническая дискуссия по этой проблеме здесь: http://mysqlha.blogspot.com/2009/08/fast-count-for-innodb.html
два вопроса: Почему вы используете MySQL 4.0? Это древний и неподдерживаемый. Зачем вам нужен точный подсчет всей таблицы? – hobodave
Оказывается, оба ваших вопроса связаны: Im фактически обновляет от 4.0 до 5.0 и, назовите меня параноидальным или что-то в этом роде, но я хотел убедиться, что обновление было успешным, и поэтому мне хотелось сделать сравнение строк по каждой таблице , до и после обновления. – Thiru
@Thiru: см. Мое обновление ниже – hobodave