位图索引出现在连接条件上不起作用?

小灰狼 2012-05-12 11:06:48
以 scott 用户下的 dept 和 emp 两个表为例
Select * From
(Select * From dept Where deptno = '10') dept Left Join emp
On dept.deptno = emp.deptno

如果在 emp.deptno 上创建了一般索引,则执行计划中发现对 emp 表根据索引扫描
而如果在 emp.deptno 创建位图索引,则对 emp 表进行全表扫描

为什么会这样?
...全文
64 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dex_null 2012-05-13
  • 打赏
  • 举报
回复
根据你说的,优化器应该是基于开销的。
看一下你sql的执行计划。
再使用hint强制使用索引,看一下执行计划。
两者比较一下。
最后如果你觉得走索引的开销较小,那可能是因为表长时间没有收集统计信息。
使用anlyze命令收集一下。
再看一下normal状态下的sql语句执行计划。
希望能够帮助到你。
lxyzxq2008 2012-05-13
  • 打赏
  • 举报
回复
oracle中建立了索引,但并不是说就一定会走这个索引,因为oracle在执行sql的时候有自己的优化方式,
理论上是会根据最优化的方式来执行sql,比如一个表的数据量很小,那么全表扫描就能非常快的查询了,而如果走索引的话,说不定更费劲,索引就不会走索引了~这个在oracle中常用发生
秋雨飘落 2012-05-13
  • 打赏
  • 举报
回复
这个根据你查询的数据量

也就是分析一下数据库直方图

17,086

社区成员

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

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