sql >> Databasteknik >  >> RDS >> Mysql

Vad är bättre i MYSQL count(*) eller count(1)?

Detta är ett MySQL-svar.

De fungerar exakt likadant - om du inte använder MyISAM, sedan ett specialfall för COUNT(*) existerar. Jag använder alltid COUNT(*) i alla fall.

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

För MyISAM tabeller, COUNT(*) är optimerad för att återvända mycket snabbt om SELECT hämtar från en tabell, inga andra kolumner hämtas och det finns ingen WHERE klausul. Till exempel:

mysql> SELECT COUNT(*) FROM student;

Denna optimering gäller endast MyISAM tabeller, eftersom ett exakt radantal lagras för denna lagringsmotor och kan nås mycket snabbt. COUNT(1) är endast föremål för samma optimering om den första kolumnen är definierad som NOT NULL .

###EDIT Några av er kanske har missat det mörka försöket till humor. Jag föredrar att behålla detta som en icke-duplicerad fråga för en sådan dag då MySQL kommer att göra något annat än SQL Server. Så jag röstade för att återuppta frågan (med ett klart felaktigt svar).

Ovanstående MyISAM-optimering gäller även för

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

Så det verkliga svaret är att de är alltid samma sak.




  1. Att hyra ut bilar är lika enkelt som att köra:En datamodell för ett biluthyrningsföretag

  2. Hur använder jag CREATE OR REPLACE?

  3. SQL Server 2008 tusentalsavgränsare för en kolumn

  4. Är främmande nycklar verkligen nödvändiga i en databasdesign?