ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle的clustering_factor

oracle的clustering_factor

原创 Linux操作系统 作者:shuangoracle 时间:2012-05-10 23:08:48 0 删除 编辑

CLUSTERING_FACTOR表示表上数据的存储顺序和索引字段的顺序符合的程度,clustering_factor主要影响index range scan


1、表中数据的存放顺序按object_id存放,索引也建在object_id列上。

预测:因为数据在表中存放顺序和索引顺序一致,,clustering_factor和表数据块个数应该相近。

SQL> drop table test;

Table dropped.


SQL> create table test as select * from dba_objects order by object_id;

Table created.


SQL> create index idx_test_object_id on test(object_id);

Index created.


SQL> analyze table test compute statistics for table for all indexes for all indexed columns;

Table analyzed.


SQL> select table_name,blocks,num_rows from user_tables where table_name='TEST';

TABLE_NAME BLOCKS NUM_ROWS

------------------------------ ---------- ----------

TEST 705 49842


SQL> select clustering_factor from user_indexes where index_name='IDX_TEST_OBJECT_ID';

CLUSTERING_FACTOR

-----------------

 685


表数据块数是705,索引聚簇因子是685,接近。发现聚簇因子比数据块数还要少,这是为什么?其实只要稍加注意就会了解到,数据块中不只包含数据还包含一些其他控制信息,而clustering_factor只包含有数据。


2、表中数据按object_name顺序存放,索引建在object_id列上。

预测:表中数据存放顺序和索引排序顺序不一定一致,所以聚簇因子会远远大于数据块数。

SQL> drop table test;

Table dropped.


SQL> create table test as select * from dba_objects order by object_name;

Table created.


SQL> create index idx_test_object_id on test(object_id);

Index created.


SQL> analyze table test compute statistics for table for all indexes for all indexed columns;

Table analyzed.


SQL> select table_name,blocks,num_rows from user_tables where table_name='TEST';

TABLE_NAME BLOCKS NUM_ROWS

------------------------------ ---------- ----------

TEST 705 49842


SQL> select clustering_factor from user_indexes where index_name='IDX_TEST_OBJECT_ID';

CLUSTERING_FACTOR

-----------------

 36531


表中数据块数705,数据行49842,聚簇因子36531.聚簇因子远远大于表中数据块数,更接近于表中数据行数。


关于clustering_factor的计算方法:

因为索引是排序的,所以oracle会先找到表中物理存储的第一行,该行的clustering_factor=1;

再看物理存储的第二行,如果该行与第一行在同一个数据块,聚簇因子clustering_factor还是1不会增加,否则加1;

依次类推,直到表中所有行都计算完。

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

请登录后发表评论 登录
全部评论

注册时间:2010-08-25

  • 博文量
    84
  • 访问量
    213954