微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

这个 SHOWPLAN 可以改进什么?

如何解决这个 SHOWPLAN 可以改进什么?

我有以下查询最多可能需要 30 秒才能执行...

DECLARE @id int = NULL
DECLARE @sh nvarchar(10) = NULL

SELECT wm.Id,stl.Key,rrrwm.Id
FROM wm
INNER JOIN wmstp ON wm.Id = wmstp.Id and wmstp.Status = 'A'
    AND (@id IS NULL OR wm.id = @id)
INNER JOIN stl ON wmstp.Key = stl.Key
    AND wmstp.Code = stl.Code and stl.Status ='A' and stl.Type = 'LB'
    AND (@sh IS NULL OR wmstp.Key = @sh)
INNER JOIN ma ON stl.Key = ma.Key AND ma.Status = 'Y'
INNER JOIN mac ON ma.Id = mac.Id AND mac.Status = 'Y'
INNER JOIN maca ON mac.Id = maca.Id
LEFT JOIN rrr ON ma.Id = rrr.Id
LEFT JOIN rrrwm ON rrr.Id = rrrwm.Id
GROUP BY wm.Id,rrrwm.Id
ORDER BY stl.Key ASC

SHOWPLAN 告诉我:

  1. 并行(收集流)成本:14%
  2. 排序(不同排序)成本:25%
  3. Clustered Index Seek (Clustered) [maca] 成本:21%
  4. 聚集索引扫描(Clustered)[ma] 成本:9%
  5. 聚集索引查找(聚集)[stl] 成本:15%

所有这些表都有索引,那么我可以做些什么来改善 sql Server 2012 上的查询时间?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。