Ostatnio funkcja liczbowa była często używana, a gdy liczba do zliczenia jest stosunkowo duża, okazuje się, że count(*) zajmuje więcej czasu, a count(1) krócej.
Niektóre dokumenty zawierają następujące stwierdzenia:
Jeśli twoja tabela danych nie ma klucza głównego, count(1) jest szybszy niż count(*). Jeśli istnieje klucz główny, to klucz główny (wspólny klucz główny) jest również szybszy niż count(*). Jeśli twoja tabela ma tylko jedno pole, count(*) jest najszybsza count(*) count(1) Porównaj obie grupy. Najważniejsze jest policzenie pól danych odpowiadających (1). Jeśli count(1) jest polyindeksem, id, to count(1) musi być szybszy. Ale różnica jest bardzo niewielka. Ponieważ count(*) pole jest automatycznie optymalizowane, aby określić do. Więc nie ma potrzeby liczenia(?), używaj count(*), SQL pomoże ci ukończyć optymalizację
Szczegóły liczenia: count(*) zwraca łączną liczbę wszystkich wierszy obecnych w tabeli, w tym wierszy o wartości null,Jednak count (nazwa kolumny) zwraca łączną liczbę wszystkich wierszy w tabeli oprócz null(Liczone są także kolumny o wartościach domyślnych). odrębna nazwa kolumny, wynik będzie wynikiem po usunięciu wartości zerowej i zduplikowaniu danych
W przeszłości nie wiedziałem, że blog mówił, iż wszystkim zaleca się używanie count(0) i że efektywność zapytań jest stosunkowo wysoka itd
Obecnie okazuje się, że używanie count(0) jest błędnym przekonaniem!!
count(0) Pierwsza kolumna statystyk nie jest pusta
Nie używaj numeru (nazwa kolumny) ani liczenia (stałe) zamiast liczenia(*),
count(*) to składnia standardowej liczby wierszy zdefiniowanej przez SQL92, która nie ma nic wspólnego z bazą danych, NULL i non-NULL.
Uwaga: count(*) liczy wiersze z wartością NULL, natomiast count(nazwa kolumny) nie liczy wierszy z wartością NULL.
Dlatego w przyszłości, gdy robisz wszystkie statystyki i nie wykluczasz pustych danych, lepiej szczerze użyć liczby (*)!!
|