2009-12-12 7 views

Antwort

149
SELECT COUNT(*) FROM fooTable; 

zählt die Anzahl der Zeilen in der Tabelle.

Siehe reference manual.

+6

Ist es schneller, wenn ich den Namen der indizierten Spalte anstelle von * verwende? Wie folgt: SELECT COUNT (ID) FROM 'tablename' –

+1

Nur leicht. Ich habe eine 21961904 Zeile Tabelle, die sein COUNT in 115 Sekunden abgefragt, während die Verwendung der ID 107 Sekunden dauerte. – NargothBond

+1

COUNT (\ *) ist eine strenge Sprachdefinition. Sie erhalten einen Parse-Fehler, wenn Sie versuchen, COUNT (\ *) notieren Sie den Raum – ppostma1

5

einfach:

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

Wir haben eine andere Art und Weise die Anzahl der Zeilen in einer Tabelle mit aus Auswahlabfrage auf dieser Tabelle ausgeführt wird, um herauszufinden.

Jede mysql-Instanz verfügt über die Datenbank information_schema. Wenn Sie die folgende Abfrage ausführen, werden vollständige Details zur Tabelle einschließlich der ungefähren Anzahl der Zeilen in dieser Tabelle angezeigt.

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

Ist dies auch schneller auf einer MyISAM-Tabelle, da MyISAM die Anzahl der Zeilen speichert? – NaturalBornCamper

+0

Ich habe dies nie auf MyISAM getestet. –

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

Weil niemand erwähnt es:

show table status; 

listet alle Tabellen zusammen mit einigen zusätzlichen Informationen, für jede Tabelle einschließlich der geschätzten Reihen. Dies verwendet phpMyAdmin für seine Datenbankseite.

Diese Information ist in MySQL 4 verfügbar, wahrscheinlich auch in MySQL 3.23 - lange Zeit vor der Informationsschemadatenbank.

UPDATE

Da es nach unten Abstimmung war, möchte ich, dass die Zahl klären gezeigt nur für InnoDB und TokuDB geschätzt wird, und es ist absolut richtig für MyISAM und Arie (Maria) Speicher-Engines.

Das ist auch schnellster Weg, um die Zeilenanzahl auf MySQL zu sehen, denn Abfrage wie:

select count(*) from table; 

vollständige Tabelle scannen tun, was sehr teure Operation sein könnte, die Stunden auf große Hochlast Server nehmen könnte. Es erhöht auch die Festplatten-E/A.

Derselbe Vorgang kann die Tabelle für Einfügungen und Aktualisierungen blockieren - dies geschieht nur bei exotischen Speicher-Engines.

InnoDB und TokuDB sind mit der Tabellensperre in Ordnung, benötigen jedoch einen vollständigen Tabellenscan.

+2

Dies scheint die effizienteste Methode zum Zählen von Zeilen zu sein. Ich frage mich, warum es nicht die Antwort ist? Ich verwende InnoDB. Bei Tabellensperre sollte die Anzahl der Zeilen genau richtig sein? –

+0

für innodb ist es ** geschätzt **. aber Sie können es in einigen Fällen verwenden "Unsere Website haben xxx Mitglieder", "Wir haben xxx Ergebnisse ähnlich wie Ihre" und so weiter. – Nick

+0

Ich bin mir nicht sicher. aber für Innodb ist nicht echt zählen. Aber ist sehr nützlich für Millionen Zeilen Tabellen. – Nick

2

Sie haben Zählung zu verwenden() gibt die Anzahl der Zeilen, die ein angegebenen Kriterien entspricht

select count(*) from table_name; 
-3

Hier ist ein Sonderfall. Wenn Sie nie Daten aus der Tabelle löschen, können Sie einfach eine auto_incrementid Spalte verwenden, um die Anzahl der Zeilen zu zählen. Stellen Sie sicher, dass id nicht manuell festgelegt wird, wenn Daten in diese Tabelle eingefügt werden. Diese Operation dauert nur Millisekunden.

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

Dies sollte wirklich vermieden werden, es wird wiederkommen, um Sie eines Tages heimzusuchen .. – AndrewMcLagan

+0

Verwenden Sie niemals einen Klumpen –