索引聚簇因子虽好,使用需谨慎

      早上挤公交时拜读了公司牛人的文章 
http://mp.weixin.qq.com/s?_biz=MjM5MzExMTU2OQ==&mid=402651167&idx=1&sn=471fada84cb244779edca222dd2923f7&scene=4#wechat_redirect
     介绍了一条简单sql不简单的优化,看完想起曾经遇到一些sql全表扫描比较慢,明明有索引就是不走,强制走索引反而更慢,生涯一大困扰得以破解。
      然而以往的经验提醒我:oracle里能起到优化改善的措施必然伴随一定的风险!那么优化聚簇因子的好事会伴随什么风险呢?于是想到聚簇因子会不会不降反升、其他索引会怎么想、表能否容忍DBA动它的聚簇因子?
      做了个实验,把表TASK的数据按索引1和2的引导列ID排序创建了表TASK2
整容前的表
TABLE_NAME NUM_ROWS BLOCKS
TASK 15396350 236044
整容后的表
TABLE_NAME NUM_ROWS BLOCKS
TASK2 15396350 236044
整容前的索引
INDEX_NAME CLUSTERING_FACTOR
TASK_INDEX1 14900640
TASK_INDEX2 14719830
TASK_INDEX3 362400
PK_TASK 592060
整容后的索引
INDEX_NAME CLUSTERING_FACTOR
TASK2_INDEX1 1890090
TASK2_INDEX2 709040
TASK2_INDEX3 13609440
PK_TASK2 14465190
可见索引1和2的聚簇因子明显降低,可改善相关的业务性能;但索引3和主键索引的聚簇因子却大大增加,肯定会影响相关业务。
所以优化索引的聚簇因子一定要考虑相同表上其他索引的业务情况,不能拆东墙补西墙;降低聚簇因子的操作也会影响表的在线情况,维护需要成本,能不能动也要看表给不给约(此处想到在线重定义应该可以很好地完成数据按需排序重建);至于过一段时间后聚簇因子会不会升高,我这没实验,但我想如果数据有变动,原有的排序必然受影响,聚簇因子也会升高。





来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26614613/viewspace-2061227/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26614613/viewspace-2061227/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值