Pastaruoju metu skaičių funkcija buvo naudojama daug, o kai skaičiuojamas skaičius yra gana didelis, nustatoma, kad count(*) užima daugiau laiko, o count(1) - mažiau laiko.
Kai kuriuose dokumentuose yra šie teiginiai:
Jei duomenų lentelėje nėra pirminio rakto, count(1) yra greitesnis nei count(*). Jei yra pirminis raktas, tada pirminis raktas (bendras pirminis raktas) taip pat yra greitesnis nei count(*). Jei lentelėje yra tik vienas laukas, count(*) yra greičiausias count(*) count(1) Palyginkite abu. Svarbiausia yra suskaičiuoti duomenų laukus, atitinkančius (1). Jei count(1) yra poliindeksas, id, tai jis turi būti count(1) greitesnis. Tačiau skirtumas yra labai mažas. Kadangi count(*), laukas automatiškai optimizuojamas nurodyti. Taigi nereikia skaičiuoti(?), naudoti count(*), SQL padės užbaigti optimizavimą
Skaičiuoti išsamią informaciją: count(*) grąžins bendrą visų lentelėje esančių eilučių skaičių, įskaitant eilutes, kurių reikšmė yra nulinė,Tačiau skaičius (stulpelio pavadinimas) grąžins bendrą visų lentelės eilučių skaičių, išskyrus nulinę(Taip pat skaičiuojami stulpeliai su numatytosiomis reikšmėmis). atskiro stulpelio pavadinimas, rezultatas bus pašalinus nulinę reikšmę ir pasikartojančius duomenis
Anksčiau, aš nežinojau, kad dienoraštyje buvo sakoma, kad visiems buvo rekomenduojama naudoti count(0) ir kad užklausos efektyvumas buvo palyginti didelis, ir tt
Šiandien nustatyta, kad count(0) naudojimas yra klaidinga nuomonė!!
count(0) Pirmasis statistikos stulpelis nėra tuščias
Nenaudokite number(column name) arba count(constant) vietoj count(*),
count(*) yra standartinio eilučių skaičiaus, apibrėžto SQL92, sintaksė, kuri neturi nieko bendra su duomenų baze, NULL ir ne NULL.
Pastaba: count(*) skaičiuoja eilutes su NULL reikšme, o count(column name) neskaičiuoja eilučių su NULL reikšme.
Todėl ateityje, kai atliksite visą statistiką ir neatmetėte tuščių duomenų, geriau sąžiningai naudoti skaičių (*)!!
|