已建索引执行计划为何不走索引?

简介: DROP INDEX scott.IDX_UNI_EMP; CREATE INDEX scott.IDX_EMP_1 ON scott.EMPLOYEE (EMPLOYEE_ID); -- SELECT* FROMscott.EMPLOYEE WHEREEMPLOYEE_ID = 100; SELECT* FROMTABLE (DBMS_XPLAN.DISPLAY_CURSO
DROP INDEX scott.IDX_UNI_EMP;


CREATE INDEX scott.IDX_EMP_1 ON scott.EMPLOYEE (EMPLOYEE_ID);


--
SELECT
*
FROM
scott.EMPLOYEE
WHERE
EMPLOYEE_ID = 100;


SELECT
*
FROM
TABLE (
DBMS_XPLAN.DISPLAY_CURSOR (NULL, NULL, 'ADVANCED')
);


--
TRUNCATE TABLE scott.EMPLOYEE;


BEGIN
FOR I IN 1 .. 5000 LOOP 
INSERT INTO scott.EMPLOYEE
VALUES
('F', I) ;
END LOOP ; 
COMMIT ;
END ;
/


BEGIN
FOR I IN 5001 .. 10000 LOOP 
INSERT INTO scott.EMPLOYEE
VALUES
('M', I) ;
END LOOP ; 
COMMIT ;
END ;
/


--
SELECT
GENDER,
COUNT (*)
FROM
scott.EMPLOYEE
GROUP BY
GENDER;


EXEC DBMS_STATS .GATHER_TABLE_STATS(ownname=>'scott',tabname=>'EMPLOYEE',estimate_percent=>100,CASCADE=>TRUE,method_opt=>'for all columns size 1',no_invalidate=>FALSE);


SET AUTOT TRACE 


--
SELECT
EMPLOYEE_ID
FROM
scott.EMPLOYEE;

--强制也不走
SELECT
/*+ INDEX(EMPLOYEE IDX_EMP_1) */
EMPLOYEE_ID
FROM

scott.EMPLOYEE;


为什么?

 索引IDX_EMP_1是个单键值B树索引,因此null值不会存储其中,但是一旦EMPLOYEE_ID有了null(尽管此实验没有null),此索引会跳过null,导致执行结果不对,执行计划就有可能不会走,因此选择走全表扫描


处理办法:ALTER TABLE scott.EMPLOYEE MODIFY (EMPLOYEE_ID NOT NULL);






目录
相关文章
|
6月前
|
人工智能 编解码 算法
AI生成视频告别剪辑拼接!MAGI-1:开源自回归视频生成模型,支持一镜到底的长视频生成
MAGI-1是Sand AI开源的全球首个自回归视频生成大模型,采用创新架构实现高分辨率流畅视频生成,支持无限扩展和精细控制,在物理行为预测方面表现突出。
694 1
AI生成视频告别剪辑拼接!MAGI-1:开源自回归视频生成模型,支持一镜到底的长视频生成
|
前端开发 芯片
【前端设计】保持代码手感——多对一的握手合并模块
【前端设计】保持代码手感——多对一的握手合并模块
145 2
【前端设计】保持代码手感——多对一的握手合并模块
|
Java 测试技术 C++
Spring Boot - Junit4 / Junit5 / Spring Boot / IDEA 关系梳理
Spring Boot - Junit4 / Junit5 / Spring Boot / IDEA 关系梳理
333 0
Spring Boot - Junit4 / Junit5 / Spring Boot / IDEA 关系梳理
|
算法 数据安全/隐私保护 Python
Python值hashlib的细节讲解
Python值hashlib的细节讲解
68 0
|
安全
IntelliJ IDEA 快捷键大全(三)
IntelliJ IDEA 快捷键大全
176 0
IntelliJ IDEA 快捷键大全(三)
|
域名解析 网络协议 关系型数据库
阿里云轻量应用服务器怎么安装WordPress网站程序?
阿里云轻量应用服务器怎么安装WordPress网站程序?阿里云轻量应用服务器镜像可选WordPress应用,应用镜像可以自动安装WordPress程序及WP所依赖的Web安装环境,轻量服务器网来详细说下轻量服务器选择WordPress应用镜像创建成功后的操作流程使用方法:
311 0
|
Cloud Native 前端开发 Java
一站式动态多环境建设案例
致景科技成立于2013年12月,是领先的纺织产业互联网企业,国家高新技术企业,随着企业的不断发展项目也随着越来越多,不断的业务运行,导致开发上线越来越多,项目测试环境被抢占、开发联调环境不稳定、线上灰度环境的缺乏。开始使用阿里云微服务引擎 MSE 后实现了不同项目开发上线,全链路灰度开发测试,不停机上线发布。
一站式动态多环境建设案例
|
应用服务中间件 nginx Docker
给Kubernetes集群下的容器配置内核参数
本文指导如何给kubernetes中的容器配置内核参数
14034 1
|
弹性计算 网络安全 网络虚拟化
阿里云网络产品常见架构场景及问题
阿里云的网络和弹性计算类产品很多,使用场景也多种多样,本文是一些使用场景的集锦。主要思路是从使用特定场景中发生的典型问题出发,总结网络产品使用中的关键点。
1336 0
阿里云网络产品常见架构场景及问题
|
JSON 前端开发 数据格式
基于laravel-admin图片批量定时上传
基于laravel-admin图片批量定时上传
545 0

热门文章

最新文章