欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

为什么like执行速度比=要快得多!

更新时间: 2014-01-05 02:11:14 责任编辑: Author_N1

 

为何like执行速度比=要快得多!?
我写得一个视图v_yy_dksjtjb,其中有2层的嵌套,大量的数据处理,非常复杂。记录总数31万多条。

语句1:
select * from v_yy_dksjtjb t where dkdm like 'LP3A01'
执行耗时0.9秒
语句2:
select * from v_yy_dksjtjb t where dkdm='LP3A01'
执行耗时82秒!
语句3:
select * from v_yy_dksjtjb t where dkdm in ('LP3A01')
执行耗时73秒!

这是为什么?如何能进行优化?
--参考方法--
看执行计划。
--参考方法--
执行计划。
--参考方法--
对,执行计划贴出来。
sqlplus登上去,
set autotrace on
之后执行这三条语句。
--参考方法--
like采用的地嵌套循环(nest loop) 而 = 采用的是合并连接(merge)
nest loop join: 扫描驱动表(如果有排序,按照 排序字段 排序后),取驱动表的逐行记录与被驱动表对比.
          NESTED LOOPS有一个优点是:可以先返回已经
           连接的行,而不必等待所有的连接操作处理完才返回数据,
           这可以实现快速的响应时间。

nest loop比merge快。。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:11:14
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/6720/
本文WWW.DOC100.NET DOC100.NET版权所有。