oraclecluster:Oracle中CLUSTER_FACTOR对SQL执行计划的影响



SELECT index_name, CLUSTERING_FACTOR FROM dba_indexes WHERE index_name = 'PK_MS_YJ01';
以上语句可以查出主键索引CLUSTER_FACTOR值CLUSTER_FACTOR越小当值趋近于1024(数据块数)时

表明数据行存储顺序和索引顺序越接近越有利于使用索引

当CLUSTER_FACTOR值很大时执行以下语句:

select * from ms_yj01 where yjxh>1 and yjxh <100000000;

执行计划为TABLE ACCESS FULL(全表扫描)


可以通过以下语句来收集表统计信息缩小CLUSTER_FACTOR值ORACLE 10g可以实现自动收集:

begin
 dbms_stats.gather_TABLE_stats(ownname => 'user',tabname => 'MS_YJ01';cascade => true);
end;


再执行select * from ms_yj01 where yjxh>1 and yjxh <100000000;

执行计划已经变为TABLE ACCESS BY INDEX ROWID了
Tags:  sqlcluster oracle执行慢的sql oracle执行sql文件 oraclecluster

延伸阅读

最新评论

发表评论