sql >> Database teknologi >  >> RDS >> Mysql

Skal jeg undgå COUNT alle sammen i InnoDB?

VÆLG ANTAL(*) FRA tabelnavn ser ud til at lave en fuld tabelscanning.

VÆLG ANTAL(*) FRA tabelnavn BRUG INDEX (kolonnenavn) synes at være ret hurtigt, hvis det tilgængelige indeks IKKE er NULL, UNIK og fast længde. Et ikke-UNIKT indeks hjælper ikke meget, hvis overhovedet. Variable length-indekser (VARCHAR) ser ud til at være langsommere, men det kan bare skyldes, at indekset er fysisk større. Heltal UNIQUE NOT NULL-indekser kan tælles hurtigt. Hvilket giver mening.

MySQL burde virkelig udføre denne optimering automatisk.



  1. Sådan sletter du dublerede rækker uden entydig identifikator

  2. ved hjælp af kommaseparerede værdier inde i IN-sætning for NUMBER kolonne

  3. Sådan opretter du en tabel fra en SQL-forespørgsel

  4. Sådan overføres tabelværdiparametre til lagret procedure fra .net-kode