sql >> Database teknologi >  >> RDS >> Mysql

Hvad er bedre i MYSQL count(*) eller count(1)?

Dette er et MySQL-svar.

De udfører nøjagtig det samme - medmindre du bruger MyISAM, så et specialtilfælde for COUNT(*) eksisterer. Jeg bruger altid COUNT(*) alligevel.

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

For MyISAM tabeller, COUNT(*) er optimeret til at returnere meget hurtigt, hvis SELECT henter fra én tabel, ingen andre kolonner hentes, og der er ingen WHERE klausul. For eksempel:

mysql> SELECT COUNT(*) FROM student;

Denne optimering gælder kun for MyISAM tabeller, fordi et nøjagtigt antal rækker er gemt for denne lagermaskine og kan tilgås meget hurtigt. COUNT(1) er kun underlagt den samme optimering, hvis den første kolonne er defineret som NOT NULL .

###EDIT Nogle af jer har måske misset det mørke forsøg på humor. Jeg foretrækker at beholde dette som et ikke-duplikeret spørgsmål til enhver sådan dag, hvor MySQL vil gøre noget anderledes end SQL Server. Så jeg afgav en afstemning for at genåbne spørgsmålet (med et klart forkert svar).

Ovenstående MyISAM-optimering gælder ligeledes for

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

Så det rigtige svar er, at de er altid det samme.




  1. 10 grunde til, at din virksomhed har brug for Microsoft Access

  2. Henter navnet på den aktuelle funktion inde i funktionen med plpgsql

  3. AWS Database Migration Service DMS

  4. MySQL 'Bestil efter' - sorterer alfanumerisk korrekt