oracle在组合索引上,只使用部分列进行查询(查询时必须包含前导列,否则会走全表扫描)
发表于:2025-01-28 作者:千家信息网编辑
千家信息网最后更新 2025年01月28日,实验环境:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production1、创建表插入数据SQL> creat
千家信息网最后更新 2025年01月28日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安全错误
数据库的锁怎样保障安全
网络技术学习模拟软件
虚拟演播厅软件开发
服务器屏蔽端口
导入数据库access
同方服务器管理口密码
梦幻新诛仙服务器区别
qq数据库泄露是什么时候
剑与远征英雄专属服务器
华北2区阿里云服务器
车载网络技术 题库
软件开发与管理学院排名
网络安全火了
dalo数据库管理地址
炒股软件开发视频教程
拖拽节点 数据库左值右值变化
青岛海尔软件开发招聘信息
中华数据库技术大会
常州视觉软件开发
ztree读取数据库
未转变者服务器购买
网络技术需要学什么技能
互联网科技视频教程
系统数据库实例修改
中山市红极互联网科技
南通通富微电软件开发
服务器托管河北云服务器
数据库 数据不一致
frp sql服务器
注册表中数据库权限设置
南京毛桃网络技术有限公司