整理一下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、直接查询 :未命中索引
/
2、以A,B,C为查询条件,命中联合索引



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



************* 分别每个字段创建索引 *****************
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数据库中创建和使用联合索引的情况,包括如何插入数据,建立序列,以及不同查询条件下的索引命中分析。通过示例展示了直接查询、以A、B、C为查询条件时的索引使用,并探讨了单独为每个字段创建索引后的查询行为。内容旨在提供参考,欢迎指正。
638

被折叠的 条评论
为什么被折叠?



