Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SELECT COUNT(колона) по-бързо/по-бавно ли е от SELECT COUNT(*)?

Опитах няколко SELECT COUNT(*) FROM MyTable спрямо SELECT COUNT(SomeColumn) FROM MyTable с различни размери на таблици и където SomeColumn веднъж е колона с ключ за клъстериране, веднъж е в неклъстериран индекс и веднъж изобщо не е в индекс.

Във всички случаи, с всички размери на таблици (от 300 000 реда до 170 милиона реда), никога не виждам никаква разлика по отношение на скорост или план за изпълнение - във всички случаи, COUNT се обработва чрез сканиране на клъстерен индекс --> т.е. сканиране на цялата таблица, основно. Ако има включен неклъстъриран индекс, тогава сканирането е на този индекс - дори когато се прави SELECT COUNT(*) !

Изглежда, че няма никаква разлика по отношение на скоростта или подхода как се броят тези неща - за да ги преброи всички, SQL Server просто трябва да сканира цялата таблица - точка.

Тестовете бяха направени на SQL Server 2008 R2 Developer Edition



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да намерите местоположението на файловете с данни и регистрационните файлове в SQL Server

  2. SQL Server:Алтернатива на дълъг оператор CASE

  3. Как да извърша вмъкване и връщане на вмъкната идентичност с Dapper?

  4. Актуализация на T-SQL със SUM и Group BY

  5. Ограничение за проверка за припокриване на период от време