Sobes.tech
Middle

Mi működik gyorsabban: count(*) vagy count(oszlop_neve)?

sobes.tech MI

Válasz az MI-től

A legtöbb adatbázis-kezelő rendszerben (DBMS) a count(*) és a count(oszlop_neve) különböző logikával működik:

  • A count(*) minden sort számol, beleértve azokat is, ahol az oszlopértékek NULL-ok lehetnek.
  • A count(oszlop_neve) csak azokat a sorokat számolja, ahol a megadott oszlop értéke nem NULL.

A teljesítmény szempontjából a count(*) általában gyorsabb vagy legalább ugyanolyan gyors, mivel az adatbázisnak nem kell ellenőriznie egy adott oszlop értékeit, csak számolja a sorokat. Egyes optimalizált motorokban a count(*) használhat metaadatokat vagy indexeket a gyors számoláshoz.

Példa:

SELECT count(*) FROM users; -- összes sort számol
SELECT count(email) FROM users; -- csak azokat a sorokat számolja, ahol az email nem NULL

Összefoglalva: ha csak az összes sor száma a cél, akkor a count(*) használata jobb — ez általában gyorsabb és pontosabb.