代码片段一:
- 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 后面的条件告诉我的,如果没有这个条件,就变成了
把能买的都买回来,那就要问所有饼摊啦
------解决方案--------------------
我觉得把执行计划贴出来更好,猜测没多大意义。