oracle在组合索引上,只使用部分列进行查询(查询时必须包含前导列,否则会走全表扫描)
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,实验环境:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production1、创建表插入数据SQL> creat
千家信息网最后更新 2026年11月01日oracle在组合索引上,只使用部分列进行查询(查询时必须包含前导列,否则会走全表扫描)
实验环境:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
1、创建表插入数据
SQL> create table txtx(id int,name char(2),tx char(3),id1 int,primary key(id,name,tx));表已创建。SQL> insert into txtx values(1,'tx','tx',1);已创建 1 行。SQL> insert into txtx values(2,'tx','tx',2);已创建 1 行。SQL> insert into txtx values(3,'tx','tx',3);已创建 1 行。SQL> commit;
SQL> select * from txtx; ID NA TX ID1---------- -- --- ---------- 1 tx tx 1 2 tx tx 2 3 tx tx 3
2、执行计划
SQL> explain plan for select * from txtx where id=1 and id1 =1 and tx='tx';已解释。SQL> set linesize 200SQL> select * from table(DBMS_XPLAN.DISPLAY);PLAN_TABLE_OUTPUT--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Plan hash value: 4191381592--------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |--------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 1 | 35 | 3 (0)| 00:00:01 ||* 1 | TABLE ACCESS FULL| TXTX | 1 | 35 | 3 (0)| 00:00:01 |--------------------------------------------------------------------------Predicate Information (identified by operation id):---------------------------------------------------PLAN_TABLE_OUTPUT-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1 - filter("ID"=1 AND "ID1"=1 AND "TX"='tx')Note----- - dynamic sampling used for this statement (level=2)已选择17行。通过以上执行计划,可以看出,不含前导列,进行了全表扫描,以下使用了前导列,查询速度就上来了
SQL> explain plan for select * from txtx where id=1 and name ='tx' and tx='tx';已解释。SQL> select * from table(DBMS_XPLAN.DISPLAY);PLAN_TABLE_OUTPUT--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Plan hash value: 913771524--------------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |--------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 1 | 35 | 1 (0)| 00:00:01 || 1 | TABLE ACCESS BY INDEX ROWID| TXTX | 1 | 35 | 1 (0)| 00:00:01 ||* 2 | INDEX UNIQUE SCAN | SYS_C0024000 | 1 | | 1 (0)| 00:00:01 |--------------------------------------------------------------------------------------------Predicate Information (identified by operation id):PLAN_TABLE_OUTPUT----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2 - access("ID"=1 AND "NAME"='tx' AND "TX"='tx')已选择14行。
前导
解释
选择
查询
数据
环境
速度
实验
索引
组合
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
云之行互联网科技
中国互联网科技工作委员会毛军
互联网最新的科技
互联网科技未来
北京互联网科技公司
猪兼强互联网科技
互联网科技作文
电子科技大学互联网
唐信互联网科技 大连
互联网科技咨询
丰台科技园 互联网公司
深圳互联网科技怎么样
互联网科技教育视频
互联网时代科技改变生活
花神(南京)互联网科技有限公司
中国互联网十大科技股排名
佛山市拉法互联网科技有限公司
互联网科技股为什么大涨
互联网科技新闻
网互联网络科技
华服互联网科技靠谱吗
科技互联网企业
中国互联网科技发展
互联网科技素材视频竖屏
互联网科技公司需要的职位
互联网公司科技股
内蒙古九一互联网科技
互联网科技圈年度人物
互联网科技收购价值
互联网领先科技成果宣传视频