sql >> Databasteknik >  >> RDS >> Sqlserver

Är SELECT COUNT(kolumn) snabbare/långsammare än SELECT COUNT(*)?

Jag försökte några SELECT COUNT(*) FROM MyTable kontra SELECT COUNT(SomeColumn) FROM MyTable med olika storlekar på tabeller och där SomeColumn en gång är en klustringsnyckelkolumn, en gång är den i ett icke-klustrad index och en gång finns det inget index alls.

I alla fall, med alla storlekar på tabeller (från 300 000 rader till 170 miljoner rader), ser jag aldrig någon skillnad i termer av antingen hastighet eller utförandeplan - i alla fall, COUNT hanteras genom att göra en klustrad indexskanning --> d.v.s. skanna hela tabellen, i princip. Om det finns ett icke-klustrat index inblandat, är skanningen på det indexet - även när du gör en SELECT COUNT(*) !

Det verkar inte vara någon skillnad vad gäller hastighet eller tillvägagångssätt hur dessa saker räknas - för att räkna dem alla behöver SQL Server bara skanna hela tabellen - punkt.

Tester gjordes på SQL Server 2008 R2 Developer Edition



  1. Vad är det bästa sättet att få totalt antal poster i en mysql-tabell med php?

  2. Mysql LEFT JOIN av tre tabeller återgår till många rader

  3. Ska man generera ett unikt id för varje rad i en databastabell som annars inte har några unika nycklar?

  4. Varför matchar _ (understreck) - (bindestreck)?