sql >> Databáze >  >> RDS >> Sqlserver

Je SELECT COUNT(sloupec) rychlejší/pomalejší než SELECT COUNT(*)?

Vyzkoušel jsem několik SELECT COUNT(*) FROM MyTable vs. SELECT COUNT(SomeColumn) FROM MyTable s různými velikostmi tabulek a kde SomeColumn jednou je sloupec klastrovacího klíče, jednou je v neklastrovaném indexu a jednou není v žádném indexu.

Ve všech případech se všemi velikostmi tabulek (od 300 000 řádků do 170 milionů řádků) nikdy nevidím žádný rozdíl z hlediska rychlosti ani plánu provádění – ve všech případech COUNT je řešeno skenováním klastrovaného indexu --> tj. skenováním v podstatě celé tabulky. Pokud se jedná o index bez klastrů, pak skenování probíhá na tomto indexu – i když se provádí SELECT COUNT(*) !

Zdá se, že neexistuje žádný rozdíl, pokud jde o rychlost nebo přístup, jak se tyto věci počítají - aby je SQL Server spočítal všechny, stačí prohledat celou tabulku - tečka.

Testy byly provedeny na SQL Server 2008 R2 Developer Edition



  1. nelze aktivovat mysql2 (~> 0.3.6), již aktivováno mysql2-0.3.2 v Rails 3.1

  2. Databáze sloupců Laravel Sum Výmluvná

  3. Výjimka Io:Chyba Oracle ORA-12650 po upgradu Oracle na 12g

  4. Zpracování EXCEPTION a návrat výsledku z funkce