百万级数据测试——测试Oracle的索引
一.单一索引
1.首先创建一张表
create table five_million_test
(
name varchar2(30),
school varchar2(30)
);
2.插入数据
declare
begin
for i in 1..5000000 loop
insert into five_million_test values('姓名'||i , '学校'||i);
end loop;
commit;
end;
3.查询数据
select * from five_million_test where name='姓名3500000';
4.添加单一索引后再查询
create index ind_five_million_test on five_million_test(name)
二.复合索引
1.创建之前进行查询
select * from five_million_test where name='姓名3500000' and school='学校3500000';
2.创建复合索引并查询
create index ind_five_million_test2 on five_million_test(name,school)
三.总结
不管是单一索引还是符合索引,速度都有着非常显著的提升.不仅如此,在使用时,cost(cpu调用次数,消耗)和cardinality(影响行数,基数)都会有极为明显的降低,显著提升查询效率
单一查询时,创建索引前后的消耗对比
复合查询时,创建索引前后的消耗对比![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f42dcfe3cb361b0a630ca17a3e97b3ad.png)
四.备注
1.主键约束自带主键索引,唯一约束自带唯一索引
2.索引是基于平衡二叉树的,查询效率提高了,但增删改的效率有可能会降低
五.其他语句
删除索引
drop index ind_five_million_test
查询表的索引
select * from user_indexes where table_name='FIVE_MILLION_TEST'
查询表的索引列
select * from user_ind_columns where table_name='FIVE_MILLION_TEST'