索引
索引是用于加速数据存取的数据对象,提高数据访问性能。
单列索引
单列索引是基于单个列所建立的索引。
create index 索引名 on 表名(列名)
复合索引
复合索引是基于两个列或多个列的索引。在同一张表上可以有多个索引,但是要求列的组合必须不同。
create index 索引名 on 表名(列名1,列名2)
范例:
create index pname on emp(name);
create index pname_job on emp(name,job);
索引测试
创建一个新表,向表中插入100w或500w条数据,记录查询一条数据所用时间,之后创建索引后再查询一条数据,比较两条数据查询的时间。
--- 创建表
create table test1(
id number,
tname varchar(30)
)
--- 创建序列
create sequence seq_test;
--- 插入数据
declare
begin
for i in 1..5000000
loop
insert into test1 values(seq_test.nextval,'测试数据'||i);
end loop;
commit;
end;
没有建立索引随便查询一条数据用时0.109s
现在建立索引:
--- 对test1表的tname字段建立索引
create index test1_tname on test1(tname);
然后再随便查询一条数据:
建立索引后查询数据用时0.11s,大大提高了查询效率。
主键约束自带主键索引,唯一约束自带唯一索引