Viimasel ajal on arvufunktsiooni palju kasutatud ning kui loendatav arv on suhteliselt suur, on leitud, et count(*) võtab rohkem aega ja count(1) vähem aega.
Mõnes dokumendis on järgmised väited:
Kui sinu andmetabelis pole primaarvõtit, siis count(1) on kiirem kui count(*). Kui on primaarvõti, siis on primaarvõti (ühine primaarvõti) samuti kiirem kui count(*). Kui sinu tabelis on ainult üks väli, siis count(*) on kiireim count(*) count(1) Võrdle neid kahte. Peamine on loendada andmevälju, mis vastavad (1-le). Kui count(1) on polüindeks, id, siis peab see olema count(1) kiirem. Aga on väga väike. Kuna count(*), optimeeritakse väli automaatselt määramiseks. Seega pole vaja count(?), kasutada count(*), SQL aitab optimeerimise lõpule viia
Loenduse üksikasjad: count(*) tagastab tabelis olevate ridade koguarvu, sealhulgas read, mille väärtus on null,Kuid count (veeru nimi) tagastab tabeli kõigi ridade koguarvu, välja arvatud null(Arvestatakse ka veerud, millel on vaikimisi väärtused). erineva veeru nimi, tulemus on tulemus pärast nullväärtuse ja duplikaatandmete eemaldamist
Varem ei teadnud ma, et blogis soovitatakse kõigil kasutada count(0) ja et päringute efektiivsus on suhteliselt kõrge jne
Tänapäeval on leitud, et count(0) kasutamine on eksiarvamus!!
loend(0) Statistika esimene veerg ei ole tühi
Ära kasuta number(veeru nimi) ega count(constant) loend(*) asemel,
count(*) on SQL92 poolt määratletud standardse ridade arvu süntaks, mis ei ole seotud andmebaasiga, NULL ega mitte-NULL.
Märkus: count(*) loendab ridu, mille väärtus on NULL, samas kui count(veeru nimi) ei loe ridu, mille väärtus on NULL.
Seega, tulevikus, kui teha kõik statistilised andmed ja mitte välistada tühje andmeid, on ausalt mõistlik kasutada loendust (*)!!
|