注册
聚集主键与非聚集主键的查询性能测试
技术分享/ 文章详情 /

聚集主键与非聚集主键的查询性能测试

Z 2024/12/20 314 0 0

一、测试数据准备
新建2张测试数据表,一张为聚集主键,一张为非聚集主键
create table td_pk(id int cluster primary key,name varchar2(20));
create table td(id int primary key,name varchar2(20));
插入1000万条测试数据
insert into td_pk select level,to_char(level)||‘black’ from dual connect by level <=10000000;
commit;
insert into td select level,to_char(level)||‘black’ from dual connect by level <=10000000;
commit;
二、更新表的统计信息
DBMS_STATS.GATHER_TABLE_STATS(‘SYSDBA’,‘td_pk’,null,100,TRUE,‘FOR ALL COLUMNS SIZE AUTO’);
DBMS_STATS.GATHER_TABLE_STATS(‘SYSDBA’,‘td’,null,100,TRUE,‘FOR ALL COLUMNS SIZE AUTO’);
三、查询数据
查询聚集主键表的name字段
select name from td_pk where id < 20;
12.png
查询非聚集主键表的name字段
select name from td where id < 20;
13.png
查询聚集主键表的id字段
15.png
查询非聚集主键表的id字段
16.png

从上述查询中可以看出,当聚集主键作为筛选条件时时,查询非主键字段数据,查询性能会比使用非聚集主键作为筛选条件时更优;查询主键字段数据,使用聚集主键或者非聚集主键作为筛选条件,查询性能基本持平。

注:因测试数据的复杂程度不同,测试结果可能会有变化,以上结果仅供参考。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服