Risposte:
SELECT COUNT(*) FROM fooTable;
conterà il numero di righe nella tabella.
Vedi il manuale di riferimento .
COUNT(1), questo sarà il modo più veloce.
Perché nessuno lo ha menzionato:
show table status;
elenca tutte le tabelle insieme ad alcune informazioni aggiuntive, comprese le righe stimate per ogni tabella. Questo è ciò che phpMyAdmin sta usando per la sua pagina del database.
Queste informazioni sono disponibili in MySQL 4, probabilmente anche in MySQL 3.23 - database di schemi di informazioni precedenti da molto tempo.
Poiché vi è stata una votazione negativa , voglio chiarire che il numero mostrato è stimato per InnoDB e TokuDB ed è assolutamente corretto per i motori di archiviazione MyISAM e Aria (Maria).
Per la documentazione :
Il numero di righe. Alcuni motori di archiviazione, come MyISAM, memorizzano il conteggio esatto. Per altri motori di archiviazione, come InnoDB, questo valore è un'approssimazione e può variare dal valore effettivo fino al 40% al 50%. In tali casi, utilizzare SELEZIONA CONTEGGIO (*) per ottenere un conteggio accurato.
Questo è anche il modo più veloce per vedere il conteggio delle righe su MySQL, perché query come:
select count(*) from table;
Eseguendo la scansione della tabella completa, ciò che potrebbe essere un'operazione molto costosa che potrebbe richiedere ore su server di grandi carichi elevati. Aumenta anche l'I / O del disco.
La stessa operazione potrebbe bloccare la tabella per inserimenti e aggiornamenti, ciò accade solo su motori di archiviazione esotici.
InnoDB e TokuDB sono OK con il blocco della tabella, ma richiedono una scansione completa della tabella.
Abbiamo un altro modo per scoprire il numero di righe in una tabella senza eseguire una selectquery su quella tabella.
Ogni istanza di MySQL ha un database information_schema. Se si esegue la query seguente, verranno forniti dettagli completi sulla tabella, incluso il numero approssimativo di righe in quella tabella.
select * from information_schema.TABLES where table_name = 'table_name'\G
Semplicemente:
SELECT COUNT(*) FROM `tablename`
select count(*) from YourTable
Se hai diversi campi nella tua tabella e la tua tabella è enorme, è meglio NON UTILIZZARE * perché carica tutti i campi in memoria e l'utilizzo di quanto segue avrà prestazioni migliori
SELECT COUNT(1) FROM fooTable;
Come accennato da Santosh , penso che questa query sia opportunamente veloce, senza interrogare tutta la tabella.
Per restituire il risultato intero del numero di set di dati, per un nome di tabella specifico in un determinato database :
select TABLE_ROWS from information_schema.TABLES where TABLE_SCHEMA = 'database'
AND table_name='tablename';
count(*)con consapevolezza delle prestazioni
$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;`
Se si dispone di una chiave primaria o di una chiave / indice univoci, il metodo più rapido possibile (testato con 4 milioni di tabelle di righe)
SHOW INDEXES FROM "database.tablename" WHERE Key_Name=\"PRIMARY\"
e quindi ottieni il campo di cardinalità (è vicino all'istante)
Tempi in cui da 0,4 a 0,0001 ms
tablename