2009-12-12 19 views

risposta

149
SELECT COUNT(*) FROM fooTable; 

conta il numero di righe della tabella.

Vedere reference manual.

+6

È più veloce quando uso il nome della colonna indicizzata anziché *? In questo modo: SELECT COUNT (id) FROM 'tablename' –

+1

Solo leggermente. Ho ottenuto una tabella di righe 21961904 a cui il suo COUNT ha interrogato in 115 secondi, mentre l'ID ha impiegato 107 secondi. – NargothBond

+1

COUNT (\ *) è una definizione di lingua rigorosa. Si verificherà un errore di analisi se si tenta COUNT (\ *) di notare lo spazio – ppostma1

5

Semplicemente:

SELECT COUNT(*) FROM `tablename` 
4
select count(*) from YourTable 
16

abbiamo un altro modo per scoprire il numero di righe in una tabella con le query di selezione in esecuzione su quel tavolo.

Ogni istanza di mysql ha un database di informazioni_schema. Se si esegue la query seguente, che vi darà informazioni complete sul tavolo compreso il numero approssimativo di righe in quella tabella.

select * from information_schema.TABLES where table_name = 'table_name'\G 
+0

È più veloce anche su una tabella MyISAM poiché MyISAM sta memorizzando il numero di righe? – NaturalBornCamper

+0

Non l'ho mai testato su MyISAM. –

1
$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;` 
32

Perché nessuno ne ha parlato:

show table status; 

elenca tutti i tavoli lungo con alcune informazioni aggiuntive, tra cui righe stimate per ogni tabella. Questo è ciò che phpMyAdmin sta usando per la sua pagina di database.

Queste informazioni sono disponibili in MySQL 4, probabilmente anche in MySQL 3.23 - database di schemi di informazioni precedenti.

UPDATE

Perché c'era down-voto, tengo a precisare che il numero indicato è stimata solo per InnoDB e TokuDB ed è assolutamente corretto per MyISAM e storage engine Aria (Maria).

Questo è anche modo più veloce per vedere il conteggio delle righe su MySQL, perché interrogazione come:

select count(*) from table; 

Facendo tabella completa scansione di quello che potrebbe essere un'operazione molto costosa che potrebbe richiedere ore sul server di grandi dimensioni ad alto carico. Aumenta anche I/O del disco.

La stessa operazione potrebbe bloccare la tabella per inserimenti e aggiornamenti - questo accade solo su motori di archiviazione esotici.

InnoDB e TokuDB sono OK con blocco tabella, ma richiedono una scansione completa della tabella.

+2

Questo sembra il modo più efficiente per contare le righe. Mi chiedo perché non è la risposta? Sto usando InnoDB. Con il blocco del tavolo, il numero di righe dovrebbe essere esatto giusto? –

+0

per innodb è ** stimato **. ma puoi usarlo in alcuni casi "Il nostro sito web ha membri xxx", "Abbiamo rilevato risultati xxx simili ai tuoi" e così via. – Nick

+0

Non sono sicuro. ma per Innodb non è un vero conto. Ma è abbastanza utile per tabelle di milioni di righe. – Nick

2

devi usare count() restituisce il numero di righe che corrisponde a un criterio

select count(*) from table_name; 
-3

qui indicata è un caso speciale. Se non si eliminano mai dati dalla tabella, è sufficiente utilizzare una colonna id per contare il numero di righe. Si prega di assicurarsi che id non sia impostato manualmente quando si inseriscono dati in questa tabella. Questa operazione richiede solo millisecondi.

SELECT id FROM table ORDER BY id DESC LIMIT 1; 
+1

Questo dovrebbe essere evitato, tornerà a tormentarti un giorno .. – AndrewMcLagan

+0

Non usare mai un kludge –

Problemi correlati