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

Was ist besser in MYSQL count(*) oder count(1)?

Dies ist eine MySQL-Antwort.

Sie funktionieren genau gleich - es sei denn, Sie verwenden MyISAM, dann ein Sonderfall für COUNT(*) existiert. Ich verwende immer COUNT(*) sowieso.

https://dev.mysql.com/doc /refman/5.6/en/aggregate-functions.html#function_count

Für MyISAM Tabellen, COUNT(*) ist optimiert, um sehr schnell zurückzukehren, wenn SELECT aus einer Tabelle abruft, werden keine anderen Spalten abgerufen, und es gibt kein WHERE Klausel. Zum Beispiel:

mysql> SELECT COUNT(*) FROM student;

Diese Optimierung gilt nur für MyISAM Tabellen, da für diese Speicher-Engine eine genaue Zeilenanzahl gespeichert wird und sehr schnell darauf zugegriffen werden kann. COUNT(1) unterliegt nur dann der gleichen Optimierung, wenn die erste Spalte als NOT NULL definiert ist .

###BEARBEITEN Einige von Ihnen haben vielleicht den dunklen Versuch des Humors vermisst. Ich ziehe es vor, dies als nicht doppelte Frage für jeden Tag zu behalten, an dem MySQL etwas anderes als SQL Server macht. Also habe ich eine Stimme abgegeben, um die Frage erneut zu öffnen (mit einer eindeutig falschen Antwort).

Die obige MyISAM-Optimierung gilt gleichermaßen für

COUNT(*)
COUNT(1)
COUNT(pk-column)
COUNT(any-non-nullable-column)

Die wirkliche Antwort ist also, dass sie es immer sind das gleiche.