li
  当前位置:主页 > 性能优化 > 文章内容
li
怎么避免使用特定索引
来源: www.ixdba.net  作者: IXDBA.NET官方    时间:2008-05-24   阅读:7  

怎么避免使用特定索引


在很多时候,Oracle会错误的使用索引而导致效率的明显下降,我们可以使用一点点技巧而避免使用不该使用的索引,如:

表test,有字段a,b,c,d,在a,b,c上建立联合索引inx_a(a,b,c),在b上单独建立了一个索引Inx_b(b)。
在正常情况下,where a=? and b=? and c=?会用到索引inx_a,
where b=?会用到索引inx_b
但是,where a=? and b=? and c=? group by b会用到哪个索引呢?在分析数据不正确(很长时间没有分析)或根本没有分析数据的情况下,oracle往往会使用索引inx_b。通过执行计划的分析,这个索引的使用,将大大耗费查询时间。


当然,我们可以通过如下的技巧避免使用inx_b,而使用inx_a。
where a=? and b=? and c=? group by b||'' --如果b是字符
where a=? and b=? and c=? group by b+0 --如果b是数字
通过这样简单的改变,往往可以是查询时间提交很多倍
当然,我们也可以使用no_index提示,相信很多人没有用过,也是一个不错的方法:
select /*+ no_index(t,inx_b) */ * from test t
where a=? and b=? and c=? group by b




  上一篇: 怎么样快速复制表或者是插入数据   下一篇: Oracle什么时候会使用跳跃式索引...
li
 §相关评论  
 热点文章

·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 编辑推荐
·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 相关篇章
·怎么样快速复制表或者是插入数据
·如何使用Hint提示
·怎么样快速重整索引
·怎么样分析表或索引
·怎么设置整个数据库系统跟踪
·如何跟踪自己的会话或者是别人的...
·如何设置oracle会话自动跟踪
·oracle dataguard常见gap故障解决...
·oracle dataguard常见故障解决方...
·ORA-16025: parameter LOG_ARCHI...
·Oracle什么时候会使用跳跃式索引...
·怎么样创建使用虚拟索引
·v$sysstat中的class分别代表什么
·怎么杀掉特定的数据库会话
·如何有效的删除一个大表(extent数...
·怎么清理oracle临时段
·如何收缩临时数据文件的大小
·怎么样dump oracle数据库内部结构...
·如何获得所有的事件代码
·怎么样快速重整索引
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接