Sobes.tech
Middle

Kas veikia greičiau: count(*) ar count(stulpelio_pavadinimas)?

sobes.tech AI

Atsakymas iš AI

Daugumoje duomenų bazių valdymo sistemų (count(*) ir count(stulpelio_pavadinimas)) veikia su skirtinga logika:

  • count(*) skaičiuoja visas eilutes, įskaitant tas, kuriose stulpelių reikšmės gali būti NULL.
  • count(stulpelio_pavadinimas) skaičiuoja tik tas eilutes, kuriose nurodyto stulpelio reikšmė nėra NULL.

Kalbant apie našumą, count(*) dažniausiai yra greičiau arba bent jau toks pat greitis, nes duomenų bazė nereikalauja tikrinti konkrečios stulpelio reikšmių, o tik skaičiuoja eilutes. Kai kuriuose optimizuotuose varikliuose count(*) gali naudoti metaduomenis arba indeksus greitam skaičiavimui.

Pavyzdys:

SELECT count(*) FROM users; -- skaičiuoja visas eilutes
SELECT count(email) FROM users; -- skaičiuoja tik tas eilutes, kuriose email nėra NULL

Apibendrinant, jei jums reikia tik bendro eilučių skaičiaus, geriau naudoti count(*) — tai dažniausiai yra greičiau ir tikslesnė.