由于索引块中存储了索引列的值,所以在检索项为索引列时,可以避免回表;
或者通过建组合索引防止回表;
即使一定要回表,也存在性能差异。这里涉及到聚合因子。
当表数据的插入顺序与索引的插入顺序相似度很高时,我们称之为聚合因子比较低;差异明显的,我们称之为聚合因子比较高。
聚合因子低的查询效率高。
查看聚合因子高低的语句:
CLUSTERING_FACTOR 即为聚合因子,官方解释:表明有多少临近的索引条目指到不同的数据块;
select a.index_name,
b.num_rows,
b.blocks,
a.clustering_factor
from user_indexes a, user_tables b
where index_name in ('COLOCATED_PK', 'DISORGANIZED_PK' )
and a.table_name = b.table_name;
INDEX_NAME NUM_ROWS BLOCKS CLUSTERING_FACTOR
------------------------------ ---------- ---------- -----------------
COLOCATED_PK 100000 1252 1190
DISORGANIZED_PK 100000 1219 99899