Ответы:
SELECT COUNT(*) FROM fooTable;
будет считать количество строк в таблице.
Смотрите справочное руководство .
COUNT(1)
, это будет самый быстрый способ.
Потому что никто не упомянул об этом:
show table status;
перечисляет все таблицы вместе с некоторой дополнительной информацией, включая примерные строки для каждой таблицы. Это то, что phpMyAdmin использует для своей страницы базы данных.
Эта информация доступна в MySQL 4, вероятно, и в MySQL 3.23 - в течение долгого времени до базы данных с информационной схемой.
Поскольку было проведено отрицательное голосование, я хочу уточнить, что показанное число рассчитано для InnoDB и TokuDB, и оно абсолютно верно для механизмов хранения MyISAM и Aria (Maria).
Согласно документации :
Количество рядов. Некоторые механизмы хранения, такие как MyISAM, хранят точное количество. Для других механизмов хранения, таких как InnoDB, это значение является приблизительным и может отличаться от фактического значения на целых 40-50%. В таких случаях используйте SELECT COUNT (*), чтобы получить точный счет.
Это также самый быстрый способ увидеть количество строк в MySQL, потому что запрос вроде:
select count(*) from table;
Выполнение полного сканирования таблицы, что может быть очень дорогой операцией, которая может занять часы на большом сервере с высокой нагрузкой. Это также увеличивает дисковый ввод-вывод.
Эта же операция может блокировать таблицу для вставок и обновлений - это происходит только на экзотических механизмах хранения.
InnoDB и TokuDB в порядке с блокировкой таблицы, но требуют полного сканирования таблицы.
У нас есть другой способ узнать количество строк в таблице, не выполняя select
запрос к этой таблице.
Каждый экземпляр MySQL имеет базу данных information_schema. Если вы выполните следующий запрос, он предоставит полную информацию о таблице, включая приблизительное количество строк в этой таблице.
select * from information_schema.TABLES where table_name = 'table_name'\G
Просто:
SELECT COUNT(*) FROM `tablename`
select count(*) from YourTable
Если в вашей таблице несколько полей, а ваша таблица огромна, лучше НЕ ИСПОЛЬЗОВАТЬ, *
так как она загружает все поля в память, а использование следующих параметров будет иметь более высокую производительность.
SELECT COUNT(1) FROM fooTable;
Как уже упоминал Сантош , я думаю, что этот запрос достаточно быстрый, не запрашивая всю таблицу.
Чтобы вернуть целочисленный результат числа записей данных для определенного имени таблицы в конкретной базе данных :
select TABLE_ROWS from information_schema.TABLES where TABLE_SCHEMA = 'database'
AND table_name='tablename';
count(*)
с пониманием производительности
$sql="SELECT count(*) as toplam FROM wp_postmeta WHERE meta_key='ICERIK' AND post_id=".$id;
$total = 0;
$sqls = mysql_query($sql,$conn);
if ( $sqls ) {
$total = mysql_result($sqls, 0);
};
echo "Total:".$total;`
Если у вас есть первичный ключ или уникальный ключ / индекс, возможен более быстрый метод (протестировано с 4 миллионами таблиц строк)
SHOW INDEXES FROM "database.tablename" WHERE Key_Name=\"PRIMARY\"
а затем получить поле мощности (оно близко к мгновенному)
Время от 0,4 до 0,0001 мс
tablename