Truy vấn đơn giản sau đây mất một thời gian rất dài (vài phút) để thực thi.cách cấu trúc chỉ mục cho nhóm theo trong Sql Server
Tôi có một chỉ số:
create index IX on [fctWMAUA] (SourceSystemKey, AsAtDateKey)
SELECT MAX([t0].[AsAtDateKey]) AS [Date], [t0].[SourceSystemKey] AS [SourceSystem]
FROM [fctWMAUA] (NOLOCK) AS [t0]
WHERE SourceSystemKey in (1,2,3,4,5,6,7,8,9)
GROUP BY [t0].[SourceSystemKey]
Số liệu thống kê như sau:
- logic đọc 1827978
- vật lý lần đọc 1113
- đọc aheads 1.806.459
Chụp cùng truy vấn chính xác và định dạng nó như sau mang lại cho tôi những thống kê này:
- logic lần đọc 36
- vật lý lần đọc 0
- đọc aheads 0
Phải mất 31ms để thực thi.
SELECT MAX([t0].[AsAtDateKey]) AS [Date], [t0].[SourceSystemKey] AS [SourceSystem]
FROM [fctWMAUA] (NOLOCK) AS [t0]
WHERE SourceSystemKey = 1
GROUP BY [t0].[SourceSystemKey]
UNION
SELECT MAX([t0].[AsAtDateKey]) AS [Date], [t0].[SourceSystemKey] AS [SourceSystem]
FROM [fctWMAUA] (NOLOCK) AS [t0]
WHERE SourceSystemKey = 2
GROUP BY [t0].[SourceSystemKey]
UNION
SELECT MAX([t0].[AsAtDateKey]) AS [Date], [t0].[SourceSystemKey] AS [SourceSystem]
FROM [fctWMAUA] (NOLOCK) AS [t0]
WHERE SourceSystemKey = 3
GROUP BY [t0].[SourceSystemKey]
/* AND SO ON TO 9 */
Làm cách nào để tôi lập chỉ mục nhóm nhanh chóng?
Bạn có chỉ mục trên SourceSystemKey không? Nếu không, tôi nghĩ bạn có thể đang thực hiện quét toàn bộ bảng. – heferav
Showplan hiển thị những gì? và SourceSystemKey có thể lấy các giá trị nào? – Mark