Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PDO::rowCount VS COUNT(*)

1. Frage:

Verwendung von count COUNT() , intern verarbeitet der Server (MySQL) die Anfrage anders.

Beim Ausführen von COUNT() , weist der Server (MySQL) nur Speicher zu, um das Ergebnis der Zählung zu speichern.

Bei Verwendung von $row=$SQL->rowCount(); Der Server (Apache/PHP) verarbeitet die gesamte Ergebnismenge, weist Speicher für all diese Ergebnisse zu und versetzt den Server in den Abrufmodus, der viele verschiedene Details wie Sperren beinhaltet.

Beachten Sie, dass PDOStatement::rowCount() gibt die Anzahl der von der letzten Anweisung betroffenen Zeilen zurück, nicht die Anzahl der zurückgegebenen Zeilen. Wenn die letzte vom zugehörigen PDOStatement ausgeführte SQL-Anweisung war ein SELECT -Anweisung geben einige Datenbanken möglicherweise die Anzahl der von dieser Anweisung zurückgegebenen Zeilen zurück. Dieses Verhalten ist jedoch nicht für alle Datenbanken garantiert und sollte nicht für portable Anwendungen verwendet werden.

Nach meiner Analyse, wenn Sie COUNT() verwenden , würde der Prozess sowohl auf MySQL als auch auf PHP aufgeteilt, während Sie $row=$SQL->rowCount(); verwenden , wäre die Verarbeitung eher für PHP.

Also COUNT() in MySQL ist schneller.

2. Frage:

COUNT(*) ist besser als COUNT(id) .

Erklärung:

Der count(*) Funktion in MySQL ist optimiert, um die Anzahl der Werte zu finden. Die Verwendung von Platzhaltern bedeutet, dass nicht jede Zeile abgerufen wird. Es findet nur die Zählung. Verwenden Sie also count(*) wo immer möglich.

Quellen: