SQL 查询超时 同语句不同条件

ljfblog 2012-05-02 03:44:25
同语句不同条件 有的就很快,1秒
有的就超时

select b.NDT图纸号,b.焊口号,UT.rpt_id as [ID_Report UT],UT.rpt_ReportNo as [UT NO] from vWeldBaseCh b
left outer join
( select rpt_SumType
,rpt_ID
,rpt_ReportNo
,item_ID_WeldBase
from vReportItems
where rpt_ID_Project in(5584) and rpt_SumType='UT'
group by rpt_SumType
,rpt_ReportNo
,rpt_id
,item_ID_WeldBase
) as UT
on UT.item_ID_WeldBase = b.id
where ID_Project in (5584)
order by b.NDT图纸号,b.焊口号


这会是什么原因呢?
...全文
77 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhenjie 2012-05-02
  • 打赏
  • 举报
回复
问题出在:
where ID_Project in (5584)
请把a表条件先执行完成了。慢在了你的a表返回数据过多,然后left join时候计算量太大。时快时慢是和你的系统当时状态有关。减少运算量自然就快了。
ljfblog 2012-05-02
  • 打赏
  • 举报
回复
如果把 b 表的 ID_Project in (5584)
去掉,那么8万的数据只要1秒。

如果把 b 表的 ID_Project in (5584)
5584改成其他,也只要两三秒而已

ID_Project 加了非聚集索引
--小F-- 2012-05-02
  • 打赏
  • 举报
回复
什么条件不一样?请仔细说明。
Mr_Nice 2012-05-02
  • 打赏
  • 举报
回复
有的条件,走索引了,就会比较快。 有的条件没走索引,就扫描表,所以慢。

LZ Ctrl + L 看一下执行计划的不同就知道了。

22,210

社区成员

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

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