Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SELECT COUNT (cột) có nhanh hơn / chậm hơn SELECT COUNT (*) không?

Tôi đã thử một vài SELECT COUNT(*) FROM MyTable so với SELECT COUNT(SomeColumn) FROM MyTable với nhiều kích thước bảng khác nhau và nơi SomeColumn một lần là cột khóa phân cụm, một khi nó nằm trong chỉ mục không phân cụm và một khi nó không nằm trong chỉ mục nào cả.

Trong mọi trường hợp, với tất cả các kích thước của bảng (từ 300000 hàng đến 170 triệu hàng), tôi không bao giờ thấy bất kỳ sự khác biệt nào về tốc độ cũng như kế hoạch thực thi - trong mọi trường hợp, COUNT được xử lý bằng cách thực hiện quét chỉ mục theo cụm -> về cơ bản, tức là quét toàn bộ bảng. Nếu có liên quan đến chỉ mục không phân cụm, thì quá trình quét sẽ nằm trên chỉ mục đó - ngay cả khi thực hiện SELECT COUNT(*) !

Dường như không có bất kỳ sự khác biệt nào về tốc độ hoặc cách tiếp cận cách đếm những thứ đó - để đếm tất cả, SQL Server chỉ cần quét toàn bộ bảng - khoảng thời gian.

Các thử nghiệm đã được thực hiện trên 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. EXCEPT có thực thi nhanh hơn JOIN không khi các cột trong bảng giống nhau

  2. Di chuyển bảng máy chủ SQL sang nhóm tệp khác nhau

  3. Cột được tính toán trong Mã EF Đầu tiên

  4. Có cách nào để không sử dụng dấu ngoặc vuông trong SQL Server không?

  5. Tìm kiếm tùy chỉnh SQL với các ký tự đặc biệt