当前位置: 代码迷 >> Sql Server >> SQL 表链接的奇怪有关问题(子查询速度比整体查询慢!)
  详细解决方案

SQL 表链接的奇怪有关问题(子查询速度比整体查询慢!)

热度:50   发布时间:2016-04-27 11:09:24.0
SQL 表链接的奇怪问题(子查询速度比整体查询慢!)
代码片段一:
SQL code
select * from hjt_edb_wlxqjh_detailwhere strWlqdId in (    select strWlqdId    from hjt_edb_wlqd_info    where strGsWlqdId = (        select B.strWlqdId        from hjt_edb_zscjh_info A        inner join hjt_edb_wlqd_info B on A.strWlqdId = B.strWlqdId and B.strDelFlg = dbo.DELETE_FLG_0()        where A.strDelFlg = dbo.DELETE_FLG_0()        and A.strZscJhId = 'strZscJhId_1'    ))and strZscJhId = 'strZscJhId_1'

代码片段二:
SQL code
select strWlqdIdfrom hjt_edb_wlqd_infowhere strGsWlqdId = (    select B.strWlqdId    from hjt_edb_zscjh_info A    inner join hjt_edb_wlqd_info B on A.strWlqdId = B.strWlqdId and B.strDelFlg = dbo.DELETE_FLG_0()    where A.strDelFlg = dbo.DELETE_FLG_0()    and A.strZscJhId = 'strZscJhId_1')

我的问题是为什么‘代码片段一(1秒内)’比‘代码片段二(18秒)’执行的快呢?
我个人认为‘代码片段二’是‘代码片段一’的子查询,速度应该比‘代码片段一’快,求解???
备注:hjt_edb_wlqd_info 100万条数据
  hjt_edb_zscjh_info 10万条数据
  hjt_edb_wlxqjh_detail 10万条数据

------解决方案--------------------
注意,这里是要一个饼,这句话是 select * from 
hjt_edb_wlxqjh_detail
where strWlqdId in ( XXX )
)
and strZscJhId = 'strZscJhId_1'
中的and 后面的条件告诉我的,如果没有这个条件,就变成了
把能买的都买回来,那就要问所有饼摊啦
------解决方案--------------------
我觉得把执行计划贴出来更好,猜测没多大意义。
  相关解决方案