Sobes.tech
Middle

Mis töötab kiiremini: count(*) või count(veeru_nimi)?

sobes.tech AI

Vastus AI-lt

En suuremates andmebaasisüsteemides (DBMS) töötavad count(*) ja count(veerg_nimi) erineva loogikaga:

  • count(*) loeb kõik read, kaasa arvatud need, kus veergude väärtused võivad olla NULL.
  • count(veerg_nimi) loeb ainult need read, kus nimetatud veeru väärtus ei ole NULL.

Tõhususe osas on count(*) tavaliselt kiirem või vähemalt sama kiire, kuna andmebaas ei pea kontrollima konkreetse veeru väärtusi, vaid lihtsalt loeb read. Mõnedes optimeeritud mootorites võib count(*) kasutada metaandmeid või indekseid kiireks arvutamiseks.

Näide:

SELECT count(*) FROM users; -- loeb kõik read
SELECT count(email) FROM users; -- loeb ainult need read, kus email ei ole NULL

Kokkuvõtteks: kui vajate ainult ridade üldarvu, on parem kasutada count(*), kuna see on tavaliselt kiirem ja täpsem.