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.