V zadnjem času se številska funkcija pogosto uporablja, in ko je število za štetje razmeroma veliko, se izkaže, da štetje(*) traja dlje, šteje(1) pa krajše.
Nekateri dokumenti vsebujejo naslednje izjave:
Če vaša podatkovna tabela nima primarnega ključa, je count(1) hitrejši od count(*). Če obstaja primarni ključ, je primarni ključ (skupni primarni ključ) prav tako hitrejši od count(*). Če ima vaša tabela samo eno polje, je count(*) najhitrejši count(*) count(1) Primerjaj oba. Glavna stvar je šteti podatkovna polja, ki ustrezajo (1). Če je count(1) poliindeks, id, potem mora biti count(1) hitrejši. A razlika je zelo majhna. Ker count(*) je polje samodejno optimizirano za določitev . Torej ni potrebe po štetju(?), uporabi count(*), SQL ti bo pomagal dokončati optimizacijo
Podrobnosti o štetju: count(*) bo vrnil skupno število vseh vrstic v tabeli, vključno z vrsticami z vrednostjo null,Vendar pa count (ime stolpca) vrne skupno število vseh vrstic v tabeli razen null(Štejejo se tudi stolpci z privzetimi vrednostmi). različno ime stolpca, rezultat bo rezultat po odstranitvi ničelne vrednosti in podvojenih podatkih
V preteklosti nisem vedel, da blog navaja, da so vsi priporočeni za uporabo count(0) in da je učinkovitost poizvedb razmeroma visoka itd
Danes se zdi, da je uporaba count(0) zmotna predstava!!
count(0) Prvi stolpec statistike ni prazen
Ne uporabljajte number(ime stolpca) ali count(constant) namesto count(*),
count(*) je sintaksa za standardno število vrstic, določenih v SQL92, ki nima nobene zveze z bazo podatkov, NULL in ne-NULL.
Opomba: count(*) šteje vrstice z vrednostjo NULL, medtem ko count(ime stolpca) ne šteje vrstic z vrednostjo NULL.
Zato je v prihodnje, ko boste delali vse statistike in ne izključili praznih podatkov, bolje iskreno uporabiti števec (*)!!
|