求助 oracle 优化语句

15112501083 2017-05-02 01:21:25
这个语句要2秒多
select t1.isncode ,
t2.pinbancode ,
t1.outercode
from tblisnstatus t1 left join tblmoserialno t2
on t1.isncode=t2.moserialno where t1.isncode='021JHRHVH4000623'

同样一个语句,只是把查询的一个字段去掉,就只要0.0几秒。怎么优化上面的语句??
select t1.isncode ,
--t2.pinbancode ,
t1.outercode
from tblisnstatus t1 left join tblmoserialno t2
on t1.isncode=t2.moserialno where t1.isncode='021JHRHVH4000623'
...全文
1406 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
spawn888 2018-02-06
  • 打赏
  • 举报
回复
抱歉我看错了,我看成后表过滤了
spawn888 2018-02-06
  • 打赏
  • 举报
回复
我很纳闷儿,你既然left join 了,后面还用where 进行过滤,那直接inner join 不就完了。
卜塔 2017-05-02
  • 打赏
  • 举报
回复
不好意思,上一句回复是错误的,楼主忽略就好。
卜塔 2017-05-02
  • 打赏
  • 举报
回复
楼主也可以试试把数据量小的表放在left join后面作为基础表,这样执行效率也会好一点。
卜塔 2017-05-02
  • 打赏
  • 举报
回复
第一句是从两个表中取数据,第二句注释了表2的字段,相当于从一个表中取数据,执行效率变快是必然的。 楼主要想从两张表中取数据的话,这样写是没有问题的,我觉得在sql语句上面没有优化的余地了。
15112501083 2017-05-02
  • 打赏
  • 举报
回复
好像没效果。 执行计划显示: 耗时长的那个 变成了全表扫描。但是这几个字段我是有建索引的,
sxq129601 2017-05-02
  • 打赏
  • 举报
回复
看看执行计划呢,有啥区别,试试 select /*+RULE*/t1.isncode , t2.pinbancode , t1.outercode from tblisnstatus t1 left join tblmoserialno t2 on t1.isncode=t2.moserialno where t1.isncode='021JHRHVH4000623'

1,617

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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