Oracle 索引命中详解

整理一下Oracle数据查询索引命中情况,仅供参考,有问题欢迎指出修正:

创建测试表:

 CREATE TABLE TEST_HZ
(
  A  VARCHAR(20),
  B  VARCHAR(20),
  C  VARCHAR(20)
);

插入数据: 本人比较懒,然后就直接建序列插数据

create sequence seq_test_hz_a

start with 1

increment by 1

maxvalue 99999999999999999

nominvalue

nocycle

nocache;

create sequence seq_test_hz_b

start with 1

increment by 1

maxvalue 99999999999999999

nominvalue

nocycle

nocache;

create sequence seq_test_hz_c

start with 1

increment by 1

maxvalue 99999999999999999

nominvalue

nocycle

nocache;

INSERT INTO TEST_HZ VALUES(seq_test_hz_a.nextval,seq_test_hz_b.nextval,seq_test_hz_c.nextval)
直接跑,想要多少条数据就跑多少次就好  

****************  对A,B,C只创建联合索引 IDX_ABC **********************

CREATE INDEX IDX_ABC ON TEST_HZ (A,B,C);

1、直接查询 :未命中索引

Oracle 索引命中详解_第1张图片/

2、以A,B,C为查询条件,命中联合索引

Oracle 索引命中详解_第2张图片

 

Oracle 索引命中详解_第3张图片

Oracle 索引命中详解_第4张图片

3、以多个字段作为查询条件 全部命中联合索引

Oracle 索引命中详解_第5张图片

Oracle 索引命中详解_第6张图片

Oracle 索引命中详解_第7张图片

*************  分别每个字段创建索引  *****************

 

CREATE INDEX IDX_A ON TEST_HZ (A);

CREATE INDEX IDX_B ON TEST_HZ (B);

CREATE INDEX IDX_C ON TEST_HZ (C);

Oracle 索引命中详解_第8张图片

Oracle 索引命中详解_第9张图片

Oracle 索引命中详解_第10张图片

条件字段皆有索引的情况下,根据索引名称排序,优先走排序在前面的(可自行验证)

以上内容为个人总结,若有问题请指出修改,谢谢。

 

 

 

 

 

 

 

 

你可能感兴趣的:(Oracle 索引命中详解)