exists里面会走索引吗

vber1010 2010-03-31 05:27:03
假设在emp表的deptno列建了一个普通索引
在我执行:

delete from scott.emp
where empno > 7800
and exists (select null
from scott.dept
where scott.dept. deptno = scott.emp.deptno);


在执行计划里发现没有走deptno上的索引,这是为什么?
假设走了索引在速度上会不会有很大提升(在emp、dept表数据量特别大的时候)。
...全文
1006 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangren 2010-04-01
  • 打赏
  • 举报
回复
有好多年没出过差了,有时把出差当散心也未偿不可啊。

要经常来哈,交流交流,一句话共同进步啦!!!
vber1010 2010-03-31
  • 打赏
  • 举报
回复
老兵回答的真好,非常感谢!最近出差太忙,不大来了。
tangren 2010-03-31
  • 打赏
  • 举报
回复
另外还要决定你索引的选择性如何,也就是deptno的不同值个数,如果不同值很多,这样选择性就好
利用索引效率越高,如果选择性低,有可能也不会利用索引
tangren 2010-03-31
  • 打赏
  • 举报
回复
没走索引可能因为你的数据量很小,扫描索引块的成本已高过全表扫表的成本
数据量大肯定会走索引的

17,088

社区成员

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

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