Ik heb een paar SELECT COUNT(*) FROM MyTable
. geprobeerd vs. SELECT COUNT(SomeColumn) FROM MyTable
met verschillende formaten tabellen, en waar de SomeColumn
eenmaal is een kolom met clustersleutels, eenmaal in een niet-geclusterde index en eenmaal in helemaal geen index.
In alle gevallen, met tabellen in alle formaten (van 300.000 rijen tot 170 miljoen rijen), zie ik nooit enig verschil in termen van snelheid of uitvoeringsplan - in alle gevallen is de COUNT
wordt afgehandeld door een geclusterde indexscan uit te voeren --> d.w.z. het scannen van de hele tabel, eigenlijk. Als er een niet-geclusterde index bij betrokken is, dan is de scan op die index - zelfs wanneer een SELECT COUNT(*)
wordt uitgevoerd !
Er lijkt geen verschil te zijn in snelheid of benadering van hoe die dingen worden geteld - om ze allemaal te tellen, hoeft SQL Server gewoon de hele tabel te scannen - periode.
Er zijn tests uitgevoerd op SQL Server 2008 R2 Developer Edition