Oracle 索引命中详解

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

整理一下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);

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

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

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值