索引与值对于及执行计划计划
由于B*Tree索引不存储Null值,所以在索引字段允许为空的情况下,某些Oracle查询不会使用索引.
很多时候,我们看似可以使用全索引扫描(Full Index Scan)的情况,可能Oracle就会因为Null值的存在而放弃索引.
在此情况下即使使用Hints,Oracle也不会使用索引,其根本原因就是因为Null值的存在.
我们看以下测试.
在username字段为Not Null时,Index Hints可以生效.
发射导弹精准命中目标。该支队仅用3年就完成了新装备艇队组建、试航接装、整体训练、导弹实射、联合演习等一系列重大任务 SQL create table t as select username,password from dba_users;
Table created.
SQL desc t
Name Null? Type
----------------------------------------- -------- ----------------------------
USERNAME NOT NULL VARCHAR2(30)
PASSWORD VARCHAR2(30)
SQL create index i_t on t(username);
Index created.
SQL set autotrace trace explain
SQL select * from t where username=\'EYGLE\';
Execution Plan
----------------------------------------------------------
Plan hash value:
--------------------------------------------------------------------------
Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
--------------------------------------------------------------------------
0 | SELECT STATEMENT | | 1 | 34 | 2 (0)| 00:00:01
* 1 | TABLE ACCESS FULL| T | 1 | 34 | 2 (0)| 00:00:01
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter(\"USERNAME\"=\'EYGLE\')
Note
-----
- dynamic sampling used for this statement
SQL set linesize 120
SQL select /*+ index(t,i_t) */ * from t where username=\'EYGLE\';
Execution Plan
----------------------------------------------------------
Plan hash value:
------------------------------------------------------------------------------------
Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
------------------------------------------------------------------------------------
0 | SELECT STATEMENT | | 1 | 34 | 2 (0)| 00:00:01
1 | TABLE ACCESS BY INDEX ROWID| T | 1 | 34 | 2 (0)| 00:00:01
* 2 | INDEX RANGE SCAN | I_T | 1 | | 1 (0)| 00:00:01
------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access(\"USERNAME\"=\'EYGLE\')
Note
-----
- dynamic sampling used for this statement
当索引字段允许为Null时,Oracle放弃此索引:
SQL alter table t modify (username null);
Table altered.
SQL select /*+ index(t,i_t) */ * from t;
Execution Plan
----------------------------------------------------------
Plan hash value:
--------------------------------------------------------------------------
Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
--------------------------------------------------------------------------
0 | SELECT STATEMENT | | 27 | 918 | 2 (0)| 00:00:01
1 | TABLE ACCESS FULL| T | 27 | 918 | 2 (0)| 00:00:01
--------------------------------------------------------------------------
Note
-----
- dynamic sampling used for this statement
当该字段为Not Null时,索引可以被强制使用:
SQL alter table t modify (username not null);
Table altered.
SQL select /*+ index(t,i_t) */ * from t;
Execution Plan
----------------------------------------------------------
Plan hash value:
------------------------------------------------------------------------------------
Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
------------------------------------------------------------------------------------
0 | SELECT STATEMENT | | 27 | 918 | 2 (0)| 00:00:01
1 | TABLE ACCESS BY INDEX ROWID| T | 27 | 918 | 2 (0)| 00:00:01
2 | INDEX FULL SCAN | I_T | 27 | | 1 (0)| 00:00:01
------------------------------------------------------------------------------------
Note
-----
- dynamic sampling used for this statement
这就是Null值对于索引及查询的影响.
查看本文来源
扬州治白癜风哪家医院好昆明哪家医院看白癜风
孩子消化不良吃什么好
- 上一页:索引与值对及执行计划的物业
- 下一页:索引为什么比表大简单的覆盖
-
赵露思路上玻璃上拍照,却“压碎车窗”,看清腿围可算明白了
娱乐圈最不缺的就是俊男美女,靠实力靠颜值闲聊的都大把人在,但是最受欢...
2024-02-10
-
应采儿带儿子出游,老大外表帅气招风耳惹眼,小儿子清秀似女孩
在在,应采儿在社交平台上社交了一张自己和两个孩子的截图,配文是:“这...
2024-01-19
-
购买惠普 Galaxy Tab S7 FE 最多可节省 130 美元
笔记型电脑人工智慧提供的灵活性是无与伦比的。您可以流式传输恐怖片、音...
2023-12-15
-
相约厦门旅商职校,成就梦想:休闲体育服务与管理专业欢迎您
【相约惠州市北区观光旅游商务职业学校 成就憧憬】 招生工程新技术介绍:...
2023-11-29
-
大厂县反腐倡廉持续性进行中
2022年6月26日当日,代工县纪委蔡正元、代工田北俊街道办事处共同合办的反...
2023-11-26
-
紧接著汇总(Ⅲ)2022年高考真题&答案!丨持续更新ing
忘了 19:00,百年育才 挥音直播间,专业大咖谈起,悉心估分罗列高难度! 附...
2023-11-24