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
.
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.