For nylig er talfunktionen blevet brugt meget, og når det tal, der skal tælles, er relativt stort, viser det, at tælling(*) tager længere tid, og tælling(1) tager mindre tid.
Nogle dokumenter indeholder følgende udsagn:
Hvis din datatabel ikke har en primærnøgle, så er count(1) hurtigere end count(*). Hvis der findes en primærnøgle, er primærnøglen (fælles primærnøgle) også hurtigere end tælle(*). Hvis din tabel kun har ét felt, så er tælling(*) hurtigst tæl(*) tæl(1) Sammenlign de to. Det vigtigste er at tælle de datafelter, der svarer til (1). Hvis count(1) er en polyindeks, id, så må den være count(1) hurtigere. Men forskellen er meget lille. Fordi count(*), optimeres feltet automatisk til at specificere til. Så der er ikke behov for at tælle(?), brug tælle(*), SQL vil hjælpe dig med at fuldføre optimeringen
Optællingsdetaljer: count(*) vil returnere det samlede antal rækker i tabellen, inklusive rækker med værdien null,Dog vil count (kolonnenavn) returnere det samlede antal rækker i tabellen undtagen null(Kolonner med standardværdier tælles også). Særskilt kolonnenavn, resultatet vil være resultatet efter fjernelse af nullværdien og duplikerede data
Tidligere vidste jeg ikke, at bloggen sagde, at alle blev anbefalet at bruge count(0), og at forespørgselseffektiviteten var relativt høj osv
I dag viser det sig, at brugen af count(0) er en misforståelse!!
count(0) Den første kolonne i statistikkerne er ikke tom
Brug ikke tal (kolonnenavn) eller count (konstant) i stedet for count(*),
count(*) er syntaksen for det standardantal rækker defineret af SQL92, som intet har at gøre med databasen, NULL og ikke-NULL.
Bemærk: tælling(*) tæller rækker med en NULL-værdi, mens tælling (kolonnenavn) ikke tæller rækker med en NULL-værdi.
Derfor er det i fremtiden, når du laver alle statistikkerne og ikke udelukker tomme data, bedre ærligt at bruge count (*)!!
|