高分求助,SQL2008下条件查询性能问题

lonehare 2010-03-10 11:06:35
语句大概为
select sum(...), sum(...), [...约15个]
from A
left join B on ...
left join C on ...
left join D on ...
[...约6个]
where C.[...] <= D.[...]
group by A.[...], B.[...]

注:...为省略

问题如下
若将 where 一行代码去除,查询时间为 <= 2秒
加入 where 一行代码,查询时间为 1分20秒~1分22秒


求助各位 大侠,望不吝赐教原因及解决方法,拜谢!
...全文
175 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Garnett_KG 2010-03-10
  • 打赏
  • 举报
回复
这个问题没那么简单

加上where条件之後,影响了优化器的选择,可能选择了一个在优化器看来最快的一个计划才会出现这个个结果。

一般来说,要解决这类问题,需要比较前後两种执行计划的差异,找到问题点才好下手。
水族杰纶 2010-03-10
  • 打赏
  • 举报
回复
引用 10 楼 lonehare 的回复:
改成 inner join C ... inner join D ... 结果一样
条件里加上 原 where 的条件 时间就变成 1分20秒 + ,不加就 < 2秒

如果改成Inner 你把
where 條件 放到 on後面
把where 去掉 得到結果是一樣的
SQL77 2010-03-10
  • 打赏
  • 举报
回复
引用 10 楼 lonehare 的回复:
改成 inner join C ... inner join D ... 结果一样
条件里加上 原 where 的条件 时间就变成 1分20秒 + ,不加就 < 2秒

WHERE 条件不等同于AND 条件,是会过滤的
lonehare 2010-03-10
  • 打赏
  • 举报
回复
改成 inner join C ... inner join D ... 结果一样
条件里加上 原 where 的条件 时间就变成 1分20秒 + ,不加就 < 2秒
--小F-- 2010-03-10
  • 打赏
  • 举报
回复
引用 6 楼 wufeng4552 的回复:
left join on 中左表的全部记录将全部被查询显示
where 是對以上條件產生的副表進行再次篩選
所以兩次的效率不一樣
結果應該也不一樣
不知道這樣解釋合理不


是这么说的
feegle_develop 2010-03-10
  • 打赏
  • 举报
回复
考虑加having试试...
SQL77 2010-03-10
  • 打赏
  • 举报
回复
引用 6 楼 wufeng4552 的回复:
left join on 中左表的全部记录将全部被查询显示
where 是對以上條件產生的副表進行再次篩選
所以兩次的效率不一樣
結果應該也不一樣
不知道這樣解釋合理不

同意,呵呵,水哥说得是,WHERE是再查了一次
水族杰纶 2010-03-10
  • 打赏
  • 举报
回复
left join on 中左表的全部记录将全部被查询显示
where 是對以上條件產生的副表進行再次篩選
所以兩次的效率不一樣
結果應該也不一樣
不知道這樣解釋合理不
SQL77 2010-03-10
  • 打赏
  • 举报
回复
引用 3 楼 lonehare 的回复:
索引都加好了,而且全是重新生成过的

别说你的WHERE中用不到索引,
lonehare 2010-03-10
  • 打赏
  • 举报
回复
把Sum, Count, Max 及 Group By 去掉后现象一样
+ where 1分20秒 +
- where 2秒 -
lonehare 2010-03-10
  • 打赏
  • 举报
回复
索引都加好了,而且全是重新生成过的
andysun88 2010-03-10
  • 打赏
  • 举报
回复
你把group by A.[...], B.[...] 这行去掉看多少?
SQL77 2010-03-10
  • 打赏
  • 举报
回复
WHERE 条件上,连接条件上加上相应索引,分组统计的考虑加聚集
lonehare 2010-03-10
  • 打赏
  • 举报
回复
唉~~~ SQL SERVER 的 Where 执行原理到底是什么,如果只是简单的在结果里筛选,按理说不可能出现 50+ 倍的性能损失,难道 字段 的数量会对 Where 产生这么大的影响?

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧