索引(学习笔记)
示例一、创建一张表并使用PL/SQL的数据生成器导入10万条记录
--创建储户表
create table depositor
(
actid INTEGER not null,
identify INTEGER not null,
lastname VARCHAR2(10) not null,
firstname VARCHAR2(10) not null,
address1 VARCHAR2(200) not null,
address2 VARCHAR2(200),
address3 VARCHAR2(200),
account NUMBER(10,2) not null,
constraint PK_DEPOSITOR primary key (actid)
);
--查询
SELECT * FROM depositor;
使用数据生成器导入10万条记录
用解释计划窗口执行查询
select identify from depositor WHERE identify BETWEEN 10000 AND 30000;
消耗系统资源273
为identify列增加索引
CREATE INDEX deptor_index ON depositor(identify) TABLESPACE tbs_test;
再次在解释计划窗口执行查询
消耗有明显下降
示例二、创建复合索引
--没有复合索引查询
SELECT d.identify FROM depositor d WHERE d.identify>5000 AND d.actid>100500;
--创建复合索引
CREATE INDEX dp_complex_index ON depositor(identify,actid) TABLESPACE tbs_test;
反向键索引、
反向键索引主要用于大型集群系统,多用户同时更新操作
反向键索引语法
没有索引时查询
创建反向键索引
--创建反向键索引
CREATE INDEX dpt_reverse_index ON depositor(identify) REVERSE TABLESPACE tbs_test;
执行以下查询
--查询所有的firsetname并转换为全部小写
SELECT LOWER(d.firstname) FROM depositor d;
创建lower的函数索引
--创建lower的函数索引
CREATE INDEX dpt_lowerfirstname_index ON depositor(LOWER(firstname)) TABLESPACE tbs_test;
再次执行以上查询
执行统计查询
--进行统计查询
SELECT COUNT(*) FROM depositor d WHERE d.firstname='Luke';
创建位图索引
--创建位图索引
CREATE BITMAP INDEX dpt_bitmap_index ON depositor(firstname) TABLESPACE tbs_test;
删除之前的索引
--删除索引
DROP INDEX deptor_index;
DROP INDEX dp_complex_index;