Відповіді:
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