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.