Es gibt einige Unterschiede zwischen den beiden:
num_rows
ist die Anzahl der Ergebniszeilen (Datensätze) übermittelt.
count(*)
ist die Anzahl der Datensätze in der Datenbank, die der Abfrage entsprechen. Wenn die Grenze niedriger ist als die Anzahl der passenden Datensätzen in Wert abweichen kann, ist
Die Datenbank kann die Anzahl der zurückgegebenen Ergebnisse (MySQL erlaubt dies zum Beispiel) zu begrenzen, so konfiguriert werden, wobei in diesem Fall die beiden. Beachten Sie, dass die Grenzwerte vom DBA konfiguriert werden können. Aus dem SQL-Abfragecode selbst kann daher nicht ersichtlich sein, welche Grenzwerte gelten.
Die Verwendung von num_rows
zum Zählen von Datensätzen bedeutet, dass jeder Datensatz "übertragen" wird. Wenn Sie also nur eine Gesamtanzahl haben wollen (das wäre ein einzelner Datensatz/Zeile), ist die count
stattdessen besser.
Zusätzlich kann count
in komplexeren Abfrageszenarien verwendet werden, um Dinge wie Zwischensummen zu erledigen, was mit num_rows
nicht einfach ist.
Wenn Ihre Tabelle, sagen wir, eine Million Zeilen hat und Sie 'num_rows()' in PHP verwenden, um sie zu zählen, dann müssen Sie eine Million Zeilen von der Datenbank an PHP übergeben. Wenn Sie in der Datenbank "count (*)" verwenden, übergeben Sie eine Zeile an PHP. – andrewsi
@andrewsi Was sind die Leistungsunterschiede?Ich meine, 'COUNT (*)' muss auch die Zeilen zählen, nur auf dem DB-Server. – Itay
@andrewsi, warum nicht eine Antwort hinterlassen? –