Odpowiedzi:
COUNT(1), to będzie najszybszy sposób.
Ponieważ nikt o tym nie wspomniał:
show table status;
zawiera listę wszystkich tabel wraz z dodatkowymi informacjami, w tym szacunkowymi wierszami dla każdej tabeli. To jest to, czego phpMyAdmin używa na swojej stronie bazy danych.
Te informacje są dostępne w MySQL 4, prawdopodobnie również w MySQL 3.23 - dawno temu w bazie danych schematu informacji.
Ponieważ głosowanie odrzucono, chcę wyjaśnić, że pokazana liczba jest szacunkowa dla InnoDB i TokuDB i jest absolutnie poprawna dla silników pamięci masowej MyISAM i Aria (Maria).
Zgodnie z dokumentacją :
Liczba rzędów. Niektóre mechanizmy przechowywania danych, takie jak MyISAM, przechowują dokładną liczbę. W przypadku innych silników pamięci masowej, takich jak InnoDB, ta wartość jest przybliżeniem i może różnić się od rzeczywistej wartości nawet o 40% do 50%. W takich przypadkach użyj polecenia SELECT COUNT (*), aby uzyskać dokładną liczbę.
Jest to również najszybszy sposób na sprawdzenie liczby wierszy w MySQL, ponieważ zapytanie takie jak:
select count(*) from table;
Wykonywanie pełnego skanowania tabeli może być bardzo kosztowną operacją, która może zająć wiele godzin na dużym serwerze o dużym obciążeniu. Zwiększa również I / O dysku.
Ta sama operacja może zablokować tabelę dla wstawień i aktualizacji - dzieje się tak tylko w egzotycznych silnikach pamięci masowej.
InnoDB i TokuDB działają poprawnie z blokadą tabeli, ale wymagają pełnego skanowania tabeli.
Mamy inny sposób sprawdzenia liczby wierszy w tabeli bez uruchamiania selectzapytania w tej tabeli.
Każda instancja MySQL ma bazę danych information_schema. Jeśli uruchomisz następujące zapytanie, poda ono pełne szczegóły dotyczące tabeli, w tym przybliżoną liczbę wierszy w tej tabeli.
select * from information_schema.TABLES where table_name = 'table_name'\G
Po prostu:
SELECT COUNT(*) FROM `tablename`
select count(*) from YourTable
Jeśli masz kilka pól w swojej tabeli, a Twoja tabela jest ogromna, lepiej NIE UŻYWAĆ, * ponieważ załaduj wszystkie pola do pamięci, a użycie poniższych da lepszą wydajność
SELECT COUNT(1) FROM fooTable;
Jak wspomniał Santosh , myślę, że to zapytanie jest odpowiednio szybkie, bez przeszukiwania całej tabeli.
Aby zwrócić wynik całkowity liczby rekordów danych dla określonej nazwy tabeli w określonej bazie danych :
select TABLE_ROWS from information_schema.TABLES where TABLE_SCHEMA = 'database'
AND table_name='tablename';
count(*)ze świadomością wydajności
$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;`
Jeśli masz klucz podstawowy lub unikalny klucz / indeks, szybsza możliwa metoda (przetestowana z 4 milionami tabel wierszy)
SHOW INDEXES FROM "database.tablename" WHERE Key_Name=\"PRIMARY\"
a następnie uzyskaj pole liczności (jest bliskie natychmiastowej)
Czasy, w których od 0,4 s do 0,0001 ms
tablename