Sobes.tech
Middle

Co działa szybciej: count(*) czy count(nazwa_kolumny)?

sobes.tech AI

Odpowiedź od AI

W większości systemów zarządzania bazami danych (DBMS) count(*) i count(nazwa_kolumny) działają według różnych logik:

  • count(*) liczy wszystkie wiersze, w tym te, w których wartości w kolumnach mogą być NULL.
  • count(nazwa_kolumny) liczy tylko te wiersze, w których wartość w podanej kolumnie nie jest NULL.

Pod względem wydajności, count(*) jest zazwyczaj szybszy lub co najmniej tak szybki, ponieważ system nie musi sprawdzać wartości w konkretnej kolumnie, a jedynie zlicza wiersze. W niektórych zoptymalizowanych silnikach count(*) może korzystać z metadanych lub indeksów do szybkiego zliczania.

Przykład:

SELECT count(*) FROM users; -- liczy wszystkie wiersze
SELECT count(email) FROM users; -- liczy tylko wiersze, gdzie email nie jest NULL

Podsumowując: jeśli potrzebujesz tylko ogólnej liczby wierszy, lepiej użyć count(*) — jest to zwykle szybsze i dokładniejsze.