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

Cosa c'è di meglio in MySQL count(*) o count(1)?

Questa è una risposta MySQL.

Funzionano esattamente allo stesso modo, a meno che tu non stia utilizzando MyISAM, quindi un caso speciale per COUNT(*) esiste. Uso sempre COUNT(*) comunque.

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

Per MyISAM tabelle, COUNT(*) è ottimizzato per tornare molto rapidamente se SELECT recupera da una tabella, non vengono recuperate altre colonne e non c'è WHERE clausola. Ad esempio:

mysql> SELECT COUNT(*) FROM student;

Questa ottimizzazione si applica solo a MyISAM tabelle, perché per questo motore di archiviazione viene memorizzato un conteggio esatto delle righe e si può accedere molto rapidamente. COUNT(1) è soggetto alla stessa ottimizzazione solo se la prima colonna è definita come NOT NULL .

###EDITAlcuni di voi potrebbero aver perso l'oscuro tentativo di umorismo. Preferisco mantenerla come una domanda non duplicata per qualsiasi giorno in cui MySQL farà qualcosa di diverso da SQL Server. Quindi ho votato per riaprire la domanda (con una risposta chiaramente sbagliata).

L'ottimizzazione MyISAM di cui sopra si applica ugualmente a

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

Quindi la vera risposta è che sono sempre lo stesso.