Pēdējā laikā skaitļu funkcija tiek izmantota daudz, un, ja skaitāmais skaitlis ir salīdzinoši liels, tiek konstatēts, ka count(*) aizņem vairāk laika, un count(1) aizņem mazāk laika.
Dažos dokumentos ir šādi paziņojumi:
Ja datu tabulai nav primārās atslēgas, count(1) ir ātrāks nekā count(*). Ja ir primārā atslēga, tad arī primārā atslēga (kopīgā primārā atslēga) ir ātrāka par count(*). Ja tabulā ir tikai viens lauks, tad count(*) ir visātrākais count(*) count(1) Salīdziniet abus. Galvenais ir saskaitīt datu laukus, kas atbilst (1). Ja count(1) ir poliindekss, id, tad tam jābūt count(1) ātrākam. Bet atšķirība ir ļoti maza. Tā kā count(*), lauks tiek automātiski optimizēts, lai norādītu. Tātad nav nepieciešams skaitīt (?), izmantot count(*), SQL palīdzēs jums pabeigt optimizāciju
Skaitīt detaļas: count(*) atgriezīs visu tabulā esošo rindu kopējo skaitu, ieskaitot rindas ar vērtību null,Tomēr count (kolonnas nosaukums) atgriezīs visu tabulas rindu kopējo skaitu, izņemot null(Tiek skaitītas arī kolonnas ar noklusējuma vērtībām). atšķirīgs kolonnas nosaukums, rezultāts būs rezultāts pēc vērtības Null un datu dublikātu noņemšanas
Agrāk es nezināju, ka emuārā bija teikts, ka ikvienam ieteicams izmantot count(0) un ka vaicājuma efektivitāte ir salīdzinoši augsta utt
Mūsdienās tiek konstatēts, ka count(0) izmantošana ir nepareizs priekšstats!!
count(0) Statistikas pirmā kolonna nav tukša
Nelietojiet number(kolonnas nosaukums) vai count(constant) count(*) vietā,
count(*) ir SQL92 definētā standarta rindu skaita sintakse, kurai nav nekāda sakara ar datu bāzi, NULL un ne-NULL.
Piezīme: count(*) skaita rindas ar vērtību NULL, bet count(kolonnas nosaukums) neskaita rindas ar vērtību NULL.
Tāpēc nākotnē, veicot visu statistiku un neizslēdzot tukšus datus, labāk ir godīgi izmantot skaitu (*)!!
|