EXPLAIN и COUNT возвращают два разных значения - PullRequest
3 голосов
/ 03 июня 2010

я делаю:

explain select * from calibration;

говорится 52133456345632 строки

когда я делаю:

select count(*) from calibration;

я получаю 52134563456961

Может кто-нибудь объяснить, что здесь происходит?

1 Ответ

7 голосов
/ 03 июня 2010

Статистика таблицы (используемая EXPLAIN) основана на значениях в системном кэше, которые могут быть неточными.

http://dev.mysql.com/doc/refman/5.1/en/using-explain.html говорит:

Для таблиц InnoDB:это число является приблизительным и не всегда может быть точным.

Таким образом, версия запроса «count ()» будет точной, поскольку она действительно «посчитает» существующие строки.Версия объяснения не обязательно считает ваши строки, но может использовать оценку / кэш.Explain не предназначен для фактического использования в коде или производстве - это всего лишь инструмент, помогающий анализировать ваши запросы.

...