跪求大神指导:一下sql为什么加了一个exists后查询变得很慢很慢。oracle~~~万分感谢~~~

luoyg1004 2014-08-15 09:13:24
具体请见截图,以为是内网无法拷贝代码,请见谅
注: 其中 A 表中的数据大概 60 多万晚条,下面 OB 表中数据才 6 千多条,换成用 in 也是一样的效率啊
exists还造成了全表扫描了,包括buffer sort 了 ,
请大神知道如何改写此sql,谢谢啊~~~



...全文
926 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灰狼W 2014-08-18
  • 打赏
  • 举报
回复
第一个图中,由于没有有效的过滤条件,四个表之间都进行了全表的哈希连接 第二个图,exists条件作为主要的过滤条件,执行计划发生了变化。出现了嵌套连接和排序归并连接 全表扫描并不是由于exists造成的,而所谓的查询变得很慢,是在pl/sql developer中执行的吧,如果第一个查询里"fetch last page",会比第二个查询更慢 试试 A上建 (ecif_cust_no,role_player_typ,row_stat_cd)组合索引 CN上建ecif_cust_no字段的索引
luoyg1004 2014-08-15
  • 打赏
  • 举报
回复
引用 2 楼 sych888 的回复:
怎么感觉你表表关联的字段上都没有索引或索引无效? 感觉问题不是在用EXISTS上,主要是在索引上? 那去掉EXISTS语句还会走全表扫描码
应该和索引没关系,第一张图片就是没有exists 的情况呀,第二张图片是加了exiss的情况,多了一些全表扫描和排序。
sych888 2014-08-15
  • 打赏
  • 举报
回复
怎么感觉你表表关联的字段上都没有索引或索引无效? 感觉问题不是在用EXISTS上,主要是在索引上? 那去掉EXISTS语句还会走全表扫描码
luoyg1004 2014-08-15
  • 打赏
  • 举报
回复
希望高手讲解讲解,谢谢

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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