MySQL: как эффективно подсчитывать количество строк в большой таблице?

Каков способ наиболее эффективно подсчитать общее количество строк в большой таблице? У меня есть таблица с 23 миллионами строк, и следующий запрос занимает более 30 секунд на рабочем оборудовании:

select count(*) from tablename;

Кажется, что MySQL должен выполнять сканирование таблицы, но это не похоже, что это необходимо.

Ответы

Ответ 1

Если достаточно аппроксимации, вы можете использовать:

show table status like 'tablename'

Ответ 2

В InnoDB количество строк таблицы медленное.

MyISAM, с другой стороны, имеет счетчик строк как свойство таблицы, что делает ваш запрос очень быстрым в MyISAM.

Ответ 3

Использовать запрос кеша SELECT SQL_CACHE count (column_name) из таблицы