To jest odpowiedź MySQL.
Działają dokładnie tak samo - chyba że używasz MyISAM, wtedy specjalny przypadek dla COUNT(*)
istnieje. Zawsze używam COUNT(*)
w każdym razie.
https://dev.mysql.com/doc /refman/5.6/en/aggregate-functions.html#function_count
Dla MyISAM
tabele, COUNT(*)
jest zoptymalizowany do bardzo szybkiego powrotu, jeśli SELECT
pobiera z jednej tabeli, nie są pobierane żadne inne kolumny i nie ma WHERE
klauzula. Na przykład:
mysql> SELECT COUNT(*) FROM student;
Ta optymalizacja dotyczy tylko MyISAM
tabele, ponieważ dla tego mechanizmu przechowywania przechowywana jest dokładna liczba wierszy, a dostęp do nich można uzyskać bardzo szybko. COUNT(1)
podlega tej samej optymalizacji tylko wtedy, gdy pierwsza kolumna jest zdefiniowana jako NOT NULL
.
Powyższa optymalizacja MyISAM dotyczy w równym stopniu
COUNT(*)
COUNT(1)
COUNT(pk-column)
COUNT(any-non-nullable-column)
Tak więc prawdziwa odpowiedź brzmi:zawsze to samo.