博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何降低索引的clustering_factor (转)
阅读量:5290 次
发布时间:2019-06-14

本文共 1643 字,大约阅读时间需要 5 分钟。

环境:
OS:Red Hat Linux As 5
DB:10.2.0.4
 
我们知道判断一个索引的好坏可以通过该索引的clustering_factor高低来衡量,clustering_factor越低,索引的使用效果就越好,那怎么样才能降低索引的clustering_factor呢,通常使用的方法是让表的索引字段值按顺序存储,下面通过一个例子说明.
 
1.创建表并构造无序的数据
create table scott.tb_index_test
(
  id number not null,
  name varchar2(30)
);
 
create index scott.idx_tb_index_test  on scott.tb_index_test(id);
 
declare
  l_random_value number;
begin
  for i in  1 .. 100000 loop
    l_random_value := round(dbms_random.value(1,100000));
    insert into scott.tb_index_test(id) values (l_random_value);
    commit;
  end loop;
end;
 
2.分析表
 
begin
  dbms_stats.gather_table_stats(ownname => 'SCOTT',
                                tabname => 'TB_INDEX_TEST',
                                cascade => true);
end;
 
3.查看索引当前的clustering_factor
 
SQL> select ui.clustering_factor, ui.num_rows, ui.index_type, ui.distinct_keys
  from dba_indexes ui where ui.table_name = 'TB_INDEX_TEST';
CLUSTERING_FACTOR   NUM_ROWS INDEX_TYPE                  DISTINCT_KEYS
----------------- ---------- --------------------------- -------------
            99742     100000 NORMAL                             100000
 
4.将表中的数据按照索引字段存储
 
create table scott.tmp as select * from scott.tb_index_test;
truncate table scott.tb_index_test;
insert into scott.tb_index_test select * from scott.tmp order by id;
 
5.再次分析表
 
begin
  dbms_stats.gather_table_stats(ownname => 'SCOTT',
                                tabname => 'TB_INDEX_TEST',
                                cascade => true);
end;
 
6.这个时候索引的clustering_factor明显降低了
 
SQL> select ui.clustering_factor, ui.num_rows, ui.index_type, ui.distinct_keys
  from dba_indexes ui where ui.table_name = 'TB_INDEX_TEST';
CLUSTERING_FACTOR   NUM_ROWS INDEX_TYPE                  DISTINCT_KEYS
----------------- ---------- --------------------------- -------------
              372     100000 NORMAL                             100000
 

转载于:https://www.cnblogs.com/weixun/archive/2013/04/15/3023016.html

你可能感兴趣的文章
lightoj--1245--Harmonic Number (II)(数学推导)
查看>>
poj 1149 pigs ---- 最大流
查看>>
Swift中字符串转化为Class的方法
查看>>
使用RockMongo管理MongoDB
查看>>
20140213-想念是while里的死循环
查看>>
C语言运算符及其优先级汇总表口诀
查看>>
深入理解HTTP Session
查看>>
【转载】uclibc和glibc的差别
查看>>
搭建《深入Linux内核架构》的Linux环境
查看>>
Yuchuan_Linux_C 编程之三 静态库的制作和使用
查看>>
C#的最实用的的字符串加密解密方法大全
查看>>
前台通过window.localStorage存储用户名
查看>>
基于Flutter实现的仿开眼视频App
查看>>
析构器
查看>>
驱动的本质
查看>>
Swift的高级分享 - Swift中的逻辑控制器
查看>>
https通讯流程
查看>>
Swagger简单介绍
查看>>
C# 连接SQLServer数据库自动生成model类代码
查看>>
关于数据库分布式架构的一些想法。
查看>>