Recentelijk is de getalfunctie veel gebruikt, en wanneer het te tellen aantal relatief groot is, blijkt dat tellen(*) meer tijd kost en tell(1) minder tijd in beslag neemt.
Sommige documenten bevatten de volgende verklaringen:
Als je datatabel geen primaire sleutel heeft, dan is count(1) sneller dan count(*). Als er een primaire sleutel is, dan is de primaire sleutel (gezamenlijke primaire sleutel) ook sneller dan tellen(*). Als je tabel maar één veld heeft, is count(*) het snelst tellen(*) tellen(1) Vergelijk de twee. Het belangrijkste is om de datavelden te tellen die overeenkomen met (1). Als count(1) een polyindex is, id, dan moet het count(1) sneller zijn. Maar het verschil is heel klein. Omdat count(*) wordt het veld automatisch geoptimaliseerd om aan te specificeren. Dus er is geen noodzaak om te tellen(?), gebruik count(*), SQL helpt je de optimalisatie te voltooien
Tellingdetails: count(*) zal het totale aantal rijen in de tabel teruggeven, inclusief rijen met een waarde null,Count (kolomnaam) geeft echter het totale aantal rijen in de tabel terug behalve null(Kolommen met standaardwaarden worden ook meegeteld). Met een aparte kolomnaam, zal het resultaat het resultaat zijn nadat de nulwaarde en de dubbele data zijn verwijderd
In het verleden wist ik niet dat de blog zei dat iedereen werd aanbevolen count(0) te gebruiken en dat de query-efficiëntie relatief hoog was, enzovoort
Tegenwoordig blijkt het gebruik van count(0) een misvatting te zijn!!
count(0) De eerste kolom van de statistieken is niet leeg
Gebruik geen nummer (kolomnaam) of count (constant) in plaats van count(*),
count(*) is de syntaxis voor het standaard aantal rijen gedefinieerd door SQL92, wat niets te maken heeft met de database, NULL en niet-NULL.
Opmerking: count(*) telt rijen met een NULL-waarde, terwijl count(kolomnaam) geen rijen met een NULL-waarde telt.
Daarom is het in de toekomst, als je alle statistieken hebt gedaan en lege data niet uitsluit, beter om eerlijk count (*) te gebruiken!!
|