sql >> Database teknologi >  >> RDS >> Sqlserver

Er SELECT COUNT(kolonne) hurtigere/langsommere end SELECT COUNT(*)?

Jeg prøvede et par SELECT COUNT(*) FROM MyTable vs. SELECT COUNT(SomeColumn) FROM MyTable med forskellige størrelser af tabeller, og hvor SomeColumn én gang er en klyngenøglekolonne, én gang er den i et ikke-klynget indeks, og én gang er den slet ikke i noget indeks.

I alle tilfælde, med alle størrelser af tabeller (fra 300.000 rækker til 170 millioner rækker), ser jeg aldrig nogen forskel i form af enten hastighed eller udførelsesplan - i alle tilfælde COUNT håndteres ved at lave en clustered index scan --> dvs. at scanne hele tabellen, dybest set. Hvis der er et ikke-klynget indeks involveret, er scanningen på det indeks - selv når du laver en SELECT COUNT(*) !

Der ser ikke ud til at være nogen forskel med hensyn til hastighed eller tilgang, hvordan disse ting tælles - for at tælle dem alle, skal SQL Server bare scanne hele tabellen - punktum.

Tests blev udført på SQL Server 2008 R2 Developer Edition



  1. Implementering af database fra kildekontrol

  2. Relationelle vs ikke-relationelle databaser – Del 2

  3. Gemmer resultaterne af en udarbejdet erklæring som en tabel i mysql?

  4. SQL Right Join