Sobes.tech
Middle

Кое работи по-бързо: count(*) или count(име_на_колоната)?

sobes.tech AI

Отговор от AI

В повечето системи за управление на бази данни (СУБД) count(*) и count(име_на_колона) работят с различна логика:

  • count(*) брои всички редове, включително тези, където стойностите в колоните могат да бъдат NULL.
  • count(име_на_колона) брои само редовете, където стойността в посочената колона не е NULL.

По отношение на производителността, count(*) обикновено е по-бърз или поне толкова бърз, тъй като СУБД не трябва да проверява стойностите в конкретна колона, а просто брои редовете. В някои оптимизирани механизми count(*) може да използва метаданни или индекси за бързо преброяване.

Пример:

SELECT count(*) FROM users; -- брои всички редове
SELECT count(email) FROM users; -- брои само редовете, където email не е NULL

Обобщение: ако ви е необходим само общият брой редове, по-добре е да използвате count(*) — това обикновено е по-бързо и по-точно.