sql >> Database >  >> RDS >> Mysql

Wat is beter in MYSQL count(*) of count(1)?

Dit is een MySQL-antwoord.

Ze presteren precies hetzelfde - tenzij u MyISAM gebruikt, is er een speciaal geval voor COUNT(*) bestaat. Ik gebruik altijd COUNT(*) hoe dan ook.

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

Voor MyISAM tabellen, COUNT(*) is geoptimaliseerd om zeer snel terug te keren als deSELECT wordt opgehaald uit één tabel, er worden geen andere kolommen opgehaald en er is geen WHERE clausule. Bijvoorbeeld:

mysql> SELECT COUNT(*) FROM student;

Deze optimalisatie is alleen van toepassing op MyISAM tabellen, omdat een exacte rijtelling wordt opgeslagen voor deze opslagengine en zeer snel toegankelijk is. COUNT(1) is alleen onderhevig aan dezelfde optimalisatie als de eerste kolom is gedefinieerd als NOT NULL .

###EDITSommigen van jullie hebben de duistere poging tot humor misschien gemist. Ik geef er de voorkeur aan dit als een niet-dubbele vraag te houden voor zo'n dag waarop MySQL iets anders zal doen dan SQL Server. Dus ik heb gestemd om de vraag te heropenen (met een duidelijk verkeerd antwoord).

De bovenstaande MyISAM-optimalisatie is ook van toepassing op

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

Dus het echte antwoord is dat ze altijd . zijn hetzelfde.




  1. Wat is de dubbele tabel in Oracle?

  2. Hoe groeperen per week in MySQL?

  3. Kun je een webservice aanroepen vanuit TSQL-code?

  4. MySQL SELECTEER LIKE of REGEXP om meerdere woorden in één record te matchen