2013-02-10 4 views
3

Ну, это должно быть достаточно, чтобы получить количество всех записей в текущей базе данных:Количество записей в базе данных MySQL

SELECT SUM(TABLE_ROWS) FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = DATABASE(); 

Удивительно, но я получаю разные номера каждый раз, когда я выполняю выше заявление! Сначала я подумал, что есть проблема с моей базой данных. Но это так же для образца db, предоставленного разработчиками MySQL.

Выполнение выше заявления на sakila несколько раз приводим это значение:

46362 
48104 
45170 
47060 
48139 

Что я делаю неправильно? Это ошибка?

ответ

6

Это вещь InnoDB - вместо этого вы можете рассчитывать (id) на столе, но она медленная.

Поскольку он медленный, InnoDB берет случайный образец строк, измеряет размеры, затем делит общий размер, чтобы определить, сколько строк у них.

+0

Я всегда удивлялся, почему это так. Thx для объяснения. –

+0

Можете ли вы показать мне пример запроса, чтобы получить точный счет? –

Смежные вопросы