Viime aikoina lukufunktiota on käytetty paljon, ja kun laskettava luku on suhteellisen suuri, on havaittu, että count(*) vie enemmän aikaa ja count(1) vähemmän.
Joissakin asiakirjoissa on seuraavat väitteet:
Jos datataulussasi ei ole ensisijaista avainta, count(1) on nopeampi kuin count(*). Jos on primääriavain, myös primääriavain (yhteisavain) on nopeampi kuin count(*). Jos taulukossasi on vain yksi kenttä, count(*) on nopein count(*) count(1) Vertaa kahta. Tärkeintä on laskea tietokentät, jotka vastaavat (1). Jos count(1) on polyindex, id, sen täytyy olla count(1) nopeampi. Mutta ero on hyvin pieni. Koska count(*), kenttä optimoidaan automaattisesti määrittelemään . Joten ei tarvitse laskea(?), käyttää count(*), SQL auttaa sinua optimoimaan
Laskentatiedot: count(*) palauttaa kaikkien taulukossa olevien rivien kokonaismäärän, mukaan lukien rivit, joiden arvo on nolla,Count (sarakkeen nimi) palauttaa kuitenkin kaikkien taulukon rivien kokonaismäärän lukuun ottamatta nollaa(Myös oletusarvot sisältävät sarakkeet lasketaan). erillisen sarakkeen nimen jälkeen tulos on nollaarvon ja kaksoisdatan poistamisen jälkeen
Aiemmin en tiennyt, että blogissa sanottiin, että kaikille suositellaan count(0) ja että kyselyjen tehokkuus oli suhteellisen korkea jne
Nykyään on havaittu, että count(0):n käyttö on väärinkäsitys!!
count(0) Tilastojen ensimmäinen sarake ei ole tyhjä
Älä käytä numero(sarakkeen nimi) tai count(vakio) count(*) sijaan,
count(*) on syntaksi SQL92:n määrittelemälle standardimäärälle rivimäärälle, jolla ei ole mitään tekemistä tietokannan, NULLin ja non-NULLin kanssa.
Huomautus: count(*) laskee rivejä, joilla on NULL-arvo, kun taas count(sarakkeen nimi) ei laske rivejä, joilla on NULL-arvo.
Siksi tulevaisuudessa, kun teet kaikki tilastot etkä sulje pois tyhjää dataa, on parempi käyttää rehellisesti laskentaa (*)!!
|