Tôi có một truy vấn SQL mất 7 phút + để trả lại kết quả. Tôi đang cố gắng tối ưu hóa càng nhiều càng tốt và kế hoạch thực hiện mất 82% thời gian trên một trận đấu băm (tổng hợp). Tôi đã thực hiện một số tìm kiếm và trông giống như bằng cách sử dụng một "EXISTS" sẽ giúp giải quyết, nhưng tôi đã không tìm ra cú pháp của truy vấn để làm cho nó hoạt động. Đây là truy vấn:Tối ưu hóa truy vấn SQL để tránh Hash Match (Tổng hợp)
select dbo.Server.Name,
dbo.DiskSpace.Drive,
AVG(dbo.DiskSpace.FreeSpace) as 'Free Disk Space',
AVG(dbo.Processor.PercentUsed) as 'CPU % Used',
AVG(dbo.Memory.PercentUtilized) as '% Mem Used'
from Server
join dbo.DiskSpace on dbo.Server.ID=DiskSpace.ServerID
join dbo.Processor on dbo.Server.ID=Processor.ServerID
join dbo.Memory on dbo.Server.ID=dbo.Memory.ServerID
where
dbo.Processor.ProcessorNum='_Total' and dbo.Processor.Datetm>DATEADD(DAY,-(1),(CONVERT (date, GETDATE()))) and (dbo.Server.Name='qp-ratking' or dbo.Server.Name='qp-hyper2012' or dbo.Server.Name='qp-hyped' or dbo.Server.Name='qp-lichking')
Group By dbo.server.name, Dbo.DiskSpace.Drive
Order By Dbo.Server.Name, dbo.DiskSpace.Drive;
Làm cách nào để giảm/loại bỏ các kết nối bằng EXISTS? Hoặc nếu có cách nào tốt hơn để tối ưu hóa, tôi cũng sẽ làm như vậy. Cảm ơn