Chúng tôi có một bảng với hàng 17 triệu có chứa thuộc tính sản phẩm, chúng ta hãy nói rằng họ đang:SQL Server uẩn cho các bảng rất lớn
brandID, sizeID, colorID, giá cả, shapeID
Và chúng ta cần phải truy vấn tổng hợp theo thương hiệu và kích thước. Hiện tại, chúng tôi truy vấn và lọc dữ liệu này bằng cách thực hiện một việc như sau:
select brandID, sizeID, count(*)
from table where colorID in (1,2,3) and price=10 and shapeID=17
--"additional complex where clause here"
group by brandID, sizeID
order by brandID, sizeID
Và chúng tôi báo cáo dữ liệu này. Vấn đề là, phải mất 10 giây hoặc lâu hơn để chạy truy vấn này (và đây là một ví dụ rất đơn giản) mặc dù dữ liệu thực tế được trả lại sẽ chỉ là vài trăm hàng.
Tôi nghĩ rằng chúng tôi đã đạt đến khả năng lập chỉ mục bảng này nên tôi không nghĩ rằng bất kỳ số lượng chỉ mục nào sẽ đưa chúng tôi đến kết quả gần như ngay lập tức.
Tôi biết rất ít về OLAP hoặc các dịch vụ phân tích khác, nhưng những gì có sẵn cho SQL Server có thể lọc trước hoặc tổng hợp trước bảng này sao cho các truy vấn như trên (hoặc dữ liệu tương đương trở về tương tự) có thể được thực hiện? HOẶC Cách tốt nhất để xử lý tùy ý khi mệnh đề trên một bảng rất lớn là gì?
Bạn có thể cho chúng ta một ý tưởng về tần số và độ tươi của dữ liệu, tức là 'Có người chạy này mỗi 15 phút và dữ liệu cần phải được cập nhật' hoặc 'Rất nhiều người chạy cả ngày nhưng chúng tôi rất vui khi thấy dữ liệu đến ngày hôm qua '(ứng cử viên chính cho hình lập phương hoặc chế độ xem được lập chỉ mục) –