Chúng tôi đang sử dụng Ứng dụng nhà cung cấp chạy trên SQL Server Enterprise và ứng dụng này khá khó chịu khi thực hiện các COUNT
báo cáo trên bảng Mục trong khi xử lý hầu hết các tài liệu tài chính (đơn đặt hàng, hóa đơn, v.v.).
Ví dụ SELECT COUNT('A') FROM [dbo].[Items] T0
Tôi chắc chắn rằng bình thường sẽ ổn, nhưng có hơn 6 triệu hồ sơ và phải mất ~ 400ms để đếm tất cả. Điều này có thể chiếm một phần đáng kể của thời gian xử lý tổng thể.
Bảng đã có Chỉ mục NonClustered cực kỳ hẹp (tinyint, cộng với Khóa cụm) trên đó là thứ mà SQL đang sử dụng khi quét Bảng, vì vậy tôi không nghĩ chúng ta có thể làm gì tốt hơn trong vấn đề đó.
Có một vài giải pháp tôi biết, mà chúng tôi muốn tránh nếu có thể:
- Chế độ xem được lập chỉ mục bằng cách sử dụng
COUNT_BIG(*)
- Sử dụng Bộ xử lý nhanh hơn - chúng tôi đang sử dụng Máy chủ đám mây và có các tùy chọn rất hạn chế về vấn đề này.
- Xóa hồ sơ - không thực sự là một lựa chọn trong trường hợp này.
Chúng ta có bất kỳ lựa chọn nào khác để tăng tốc độ này không?
Đây là một Gist hiển thị thiết lập: https://gist.github.com/elvishfiend/5094f120b14f8ecfb325623edcb5f3eb