[分享]oracle索引误区_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1947 | 回复: 1   主题: [分享]oracle索引误区        下一篇 
arlen1990
注册用户
等级:上士
经验:276
发帖:7
精华:0
注册:2015-1-27
状态:离线
发送短消息息给arlen1990 加好友    发送短消息息给arlen1990 发消息
发表于: IP:您无权察看 2015-2-3 19:00:41 | [全部帖] [楼主帖] 楼主

oracle索引误区


大家都知道索引可以提高速率消除排序等,但是实际使用中往往存在滥用的情况,不仅浪费了资源,而且索引还起到了负面的作用。

往往大家还不能觉察到这样的错误,导致生产系统故障。

  普通索引:

  普通索引很简单使用,不过实际上还有一些小的误区。

  1.问题:count(1)  avg() sum() min() max()只有当索引非空情况下查询才会走索引

     解决方案:count()的时候如果有索引有空值无法解决。而avg() sum() min() max()处理时候加不加索引 is not null,结果一样,但是加索引is not null 时候会走索引扫描速度提高很多。

  2.min(),max()同时查询时候只有索引非空时候才会走索引。

     解决方案:加索引is not null,而且max() min()分开进行查询效率更高。

  3.问题:返回非索引列会产生table access by index rowid)

     解决方案:如果不需要查询非索引列尽量避免,这样可避免table access by index rowid,实在不行建立组合索引

  4.问题:索引可以提高速度,是不是索引越多越好?

     解决方案:索引并不是越多越好,索引要建的合理,否则插入、更新、删除效率很低。如果某一列有普通索引和组合索引,这时候考虑是不是如果组合索引第一列为普通索引时候,drop普通索引。另外也可以考虑现将索引失效,然后等操作完毕后使得索引生效。

  当然生产库的操作尽量在业务少的时候做,以免占用资源,对系统造成压力。




赞(0)    操作        顶端 
running
注册用户
等级:中尉
经验:491
发帖:0
精华:0
注册:2015-1-20
状态:离线
发送短消息息给running 加好友    发送短消息息给running 发消息
发表于: IP:您无权察看 2015-2-3 23:03:42 | [全部帖] [楼主帖] 2  楼

北京联动北方科技有限公司



赞(0)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论