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ė.