sql >> Database >  >> RDS >> Sqlserver

Is SELECT COUNT(kolom) sneller/langzamer dan SELECT COUNT(*)?

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



  1. Probleem met het opslaan van grote getallen in mysql DB

  2. Jaro-winkler-functie:waarom komt dezelfde score overeen met zeer vergelijkbare en zeer verschillende woorden?

  3. UTF-8-strings in een MySQL-database zijn in de war geraakt na configuratiewijziging

  4. Oracle ORA-01805 op Oracle 11g-database