oracle 索引失效
在 Oracle 11g 中,索引失效的常见原因包括函数修改列、隐式类型转换、统计信息过时等,解决方法需结合版本特性(如虚拟列、索引跳跃扫描)。通过执行计划分析、统计信息维护和合理使用提示(Hints),可有效优化索引使用。对于关键业务 SQL,建议定期监控并绑定执行计划(SQL Plan Management)
1. 索引列被函数或表达式修改
-
原因:对索引列使用函数或表达式(如
UPPER(column)、column + 1)会导致索引无法匹配。
SELECT * FROM employees WHERE TO_CHAR(hire_date, 'YYYYMMDD') = '20231001';
解决方法:
函数索引:为函数或表达式创建专用索引:
CREATE INDEX idx_hire_date_str ON employees(TO_CHAR(hire_date, 'YYYYMMDD'));
2. 复合索引未使用前导列
-
原因:复合索引
(col1, col2)必须使用col1才能生效,否则可能失效。 -
Oracle 11g 优化:支持 索引跳跃扫描(Index Skip Scan),即使未指定前导列,也可能通过跳跃扫描使用索引(但效率较低)。
-- 索引为 (department_id, employee_id)
SELECT * FROM employees WHERE employee_id = 100; -- 可能触发跳跃扫描
3. 隐式类型转换
-
原因:查询条件与索引列数据类型不匹配(如字符串 vs 数字)。
-- 索引列 employee_id 是 NUMBER 类型
SELECT * FROM employees WHERE employee_id = '100'; -- 隐式转换为字符串
4. 统计信息过时
-
原因:Oracle 优化器依赖统计信息计算成本,过时统计信息导致误判。
-
Oracle 11g 特性:
-
自动统计信息收集任务(
GATHER_STATS_JOB)默认开启,但可能因业务负载被禁用。 -
新增增量统计信息收集,适用于分区表。
-
解决方法:
-
手动收集统计信息:
EXEC DBMS_STATS.GATHER_TABLE_STATS(ownname => 'SCOTT', tabname => 'EMPLOYEES', cascade => TRUE);
检查自动任务状态:
SELECT * FROM DBA_AUTOTASK_CLIENT WHERE TASK_NAME = 'auto optimizer stats collection';
5. 高比例数据返回
-
原因:当查询返回超过约 15-20% 的数据时,优化器可能选择全表扫描。
-
解决方法:
使用 INDEX 提示强制使用索引(需谨慎):
SELECT /*+ INDEX(employees idx_salary) */ * FROM employees WHERE salary > 5000;
6. 使用 != 或 NOT IN 操作符
-
原因:非等值查询可能导致优化器跳过索引。
SELECT * FROM employees WHERE status != 'ACTIVE';
解决方法:
改写为 OR 条件或使用 INDEX_FFS(快速全索引扫描)
SELECT * FROM employees WHERE status = 'INACTIVE' OR status = 'PENDING';
7. 索引被标记为 UNUSABLE
-
原因:直接路径加载(如
INSERT /*+ APPEND */)或分区维护后,索引可能失效。
检查与修复:
-- 检查索引状态
SELECT index_name, status FROM user_indexes WHERE table_name = 'EMPLOYEES';-- 重建索引
ALTER INDEX idx_emp_name REBUILD;
8. LIKE 以通配符开头
-
原因:
LIKE '%abc'无法利用 B-Tree 索引。
解决方法:
-
反向键索引(Reverse Key Index):
CREATE INDEX idx_name_reverse ON employees(REVERSE(name));
SELECT * FROM employees WHERE REVERSE(name) LIKE REVERSE('%son');
9. OR 条件导致索引失效
-
原因:多个
OR条件未命中联合索引时,触发全表扫描。
解决方法:
SELECT * FROM employees WHERE dept_id = 10
UNION ALL
SELECT * FROM employees WHERE salary > 10000;
10. 参数设置影响索引选择
-
关键参数:
-
OPTIMIZER_INDEX_COST_ADJ:调整索引访问成本(默认 100),降低该值可能让优化器更倾向索引。 -
OPTIMIZER_INDEX_CACHING:影响嵌套循环连接中索引的缓存成本。
-
-
操作建议:
-
非必要不要修改全局参数,可通过提示(Hint)临时调整
-
SELECT /*+ OPT_PARAM('optimizer_index_cost_adj', '50') */ * FROM employees WHERE ...;
11. 位图索引的并发问题
-
原因:位图索引在并发 DML 时易被锁定,导致性能下降或失效。
-
Oracle 11g 优化:支持更多位图索引维护策略,但仍需谨慎使用。
-
解决方法:
-
在高并发 OLTP 环境中避免使用位图索引。
-
使用 B-Tree 索引替代。
-
12. 索引列允许 NULL 值
-
原因:B-Tree 索引不存储全 NULL 的条目,
IS NULL查询无法使用索引。 -
解决方法:
-
创建函数索引:
-
CREATE INDEX idx_comm_null ON employees(NVL(commission_pct, -1));
SELECT * FROM employees WHERE NVL(commission_pct, -1) = -1;
Oracle 11g 特有工具与诊断方法
执行计划分析:
EXPLAIN PLAN FOR [your_query];
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
SQL 调优顾问(SQL Tuning Advisor):
-- 生成调优任务
DECLARE
l_task VARCHAR2(64);
BEGIN
l_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_text => 'SELECT * FROM employees WHERE ...');
DBMS_SQLTUNE.EXECUTE_TUNING_TASK(l_task);
END;
/
-- 查看建议
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('task_name') FROM dual;
动态性能视图
-
V$SQL_PLAN:查看实际执行计划。 -
DBA_IND_STATISTICS:检查索引统计信息。
相关文章:
oracle 索引失效
在 Oracle 11g 中,索引失效的常见原因包括函数修改列、隐式类型转换、统计信息过时等,解决方法需结合版本特性(如虚拟列、索引跳跃扫描)。通过执行计划分析、统计信息维护和合理使用提示(Hints),…...
网络安全-等级保护(等保) 0. 前言
各位伙伴好: 招投标总结已过去一年了,时间飞逝,一直忙于工作,等保相关的内容断断续续整理了近半年的时间,但一直无暇完成博客内容。 等保已经是一个成熟的体系,现在已进入等保2.0时代,相关政策…...
【数据结构】树的介绍
目录 一、树1.1什么是树?1.2 树的概念与结构1.3树的相关术语1.4 树形结构实际运用场景 二、二叉树2.1 概念与结构2.2 特殊的二叉树2.2.1 满二叉树2.2.2 完全二叉树 个人主页,点击这里~ 数据结构专栏,点击这里~ 一、树 1.1什么是树࿱…...
大模型是如何把向量解码成文字输出的
hidden state 向量 当我们把一句话输入模型后,例如 “Hello world”: token IDs: [15496, 995]经过 Embedding Transformer 层后,会得到每个 token 的中间表示,形状为: hidden_states: (batch_size, seq_len, hidd…...
Android源码之App启动
目录 App启动概述 App启动过程 App启动过程图 源码概述 跨进程启动 进程内启动 下面以应用桌面Launcher启动App的MainActivity来举例: App启动概述 首先,MainActivity是由Launcher组件来启动的,而Launcher又是通过Activity管理服务Act…...
nginx如何实现负载均衡?
Nginx 是一款高性能的 Web 服务器和反向代理服务器,它可以通过配置实现负载均衡功能。以下是实现负载均衡的详细步骤和方法: 1. 基本概念 负载均衡是将客户端请求分发到多个后端服务器上,以提高系统的可用性和性能。Nginx 支持多种负载均衡策…...
【GESP】C++二级练习 luogu-B3721 [语言月赛202303] Stone Gambling S
GESP二级练习,多层循环分支练习,难度★✮☆☆☆。 题目题解详见:https://www.coderli.com/gesp-2-luogu-b3721/ 【GESP】C二级练习 luogu-B3721 [语言月赛202303] Stone Gambling S | OneCoderGESP二级练习,多层循环分支练习&am…...
2. Qt界面文件原理
本节主要介绍ui文件如何与窗口关联,并通过隐式连接方式显示对话框 本文部分ppt、视频截图原链接:[萌马工作室的个人空间-萌马工作室个人主页-哔哩哔哩视频] 1 UI文件如何与窗口关联 1.1 mainwindow.cpp的头文件ui_mainwindow.h 根据编译原理的基本规…...
Elastic 的 OpenTelemetry 分发版(EDOT)现已正式发布:开源、可用于生产环境的 OTel
作者:来自 Elastic Miguel Luna 及 Bahubali Shetti Elastic 自豪地宣布正式发布 Elastic OpenTelemetry 分发版(Elastic Distributions of OpenTelemetry - EDOT),其中包含 Elastic 自定义版本的 OpenTelemetry Collector 以及多…...
docker部署jenkins并成功自动化部署微服务
一、环境版本清单: docker 26.1.4JDK 17.0.28Mysql 8.0.27Redis 6.0.5nacos 2.5.1maven 3.8.8jenkins 2.492.2 二、服务架构:有gateway,archives,system这三个服务 三、部署步骤 四、安装linux 五、在linux上安装redis&#…...
UML对象图
UML对象图 一、对象图核心概念 对象图(Object Diagram)描述的是系统在某一时刻对象(实例)的状态快照。它关注的是实际对象之间的实例关系,而不是类与类之间的静态结构。主要特点有: 对象(Ob…...
【NLP 53、投机采样加速推理】
目录 一、投机采样 二、投机采样改进:美杜莎模型 流程 改进 三、Deepseek的投机采样 流程 Ⅰ、输入文本预处理 Ⅱ、引导模型预测 Ⅲ、候选集筛选(可选) Ⅳ、主模型验证 Ⅴ、生成输出与循环 骗你的,其实我在意透了 —— 25.4.4 一、…...
[250403] HuggingFace 新增检查模型与电脑兼容性的功能 | Firefox 发布137.0 支持标签组
目录 Hugging Face 让寻找兼容的 AI 模型变得更容易Firefox 137 版本更新摘要 Hugging Face 让寻找兼容的 AI 模型变得更容易 Hugging Face 是一个流行的在线平台,用于访问开源人工智能 (AI) 工具和模型。该平台推出了一项有用的新功能,允许个人轻松检查…...
VScode连接CentOS 7.6虚拟机
本文内容:在Windows上使用VMware运行虚拟机,然后使用VScode连接CentOS 7.6虚拟机。 进入系统前 安装VMware 安装教程参考:VMware安装 下载CentOS 7.6镜像 可以使用国内镜像源,但是一般国内镜像源要么已经不维护CentOS 7.6这个…...
Android Hilt 教程
Android Hilt 教程 —— 一看就懂,一学就会 1. 什么是 Hilt?为什么要用 Hilt? Hilt 是 Android 官方推荐的 依赖注入(DI)框架,基于 Dagger 开发,能够大大简化依赖注入的使用。 为什么要用 Hi…...
高德地图 3D 渲染-区域纹理图添加
引入-初始化地图(关键代码) // 初始化页面引入高德 webapi -- index.html 文件 <script src https://webapi.amap.com/maps?v2.0&key您申请的key值></script>// 添加地图容器 <div idcontainer ></div>// 地图初始化应该…...
K8S核心技术点
Pod,Service和Deployment的关系 Pod:Kubernetes 中最小的部署单元,用于运行容器化应用。 Service:提供服务发现和负载均衡,为 Pod 提供稳定的网络端点,ClusterIP,NodePort,LoadBala…...
Spring Boot 与 TDengine 的深度集成实践(二)
创建数据模型 定义实体类 在完成数据库连接配置后,我们需要创建与 TDengine 表对应的 Java 实体类。实体类是 Java 对象与数据库表之间的映射,通过定义实体类,我们可以方便地在 Java 代码中操作数据库中的数据,实现数据的持久化…...
搭建hadoop集群模式并运行
3.1 Hadoop的运行模式 先去官方看一看Apache Hadoop 3.3.6 – Hadoop: Setting up a Single Node Cluster. 本地模式:数据直接存放在Linux的磁盘上,测试时偶尔用一下 伪分布式:数据存放在HDFS,公司资金不足的时候用 完全分布式&a…...
Qt实现鼠标右键弹出弹窗退出
Qt鼠标右键弹出弹窗退出 1、鼠标右键实现1.1 重写鼠标点击事件1.2 添加头文件1.3 添加定义2、添加菜单2.1添加菜单头文件2.2创建菜单对象2.3 显示菜单 3、添加动作3.1添加动作资源文件3.2 添加头文件3.3 创建退出动作对象3.4菜单添加动作对象 4、在当前鼠标位置显示菜单4.1当前…...
Spring 服务调用接口时,提示You should be redirected automatically to target URL:
问题 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><title>Redirecting...</title><h1>Redirecting...</h1><p>You should be redirected automatically to target URL: <a href"http://xxx/api/v1/branch…...
Springboot整合Mybatis+Maven+Thymeleaf学生成绩管理系统
前言 该系统为学生成绩管理系统,可以当作学习参考,也可以成为Spirng Boot初学者的学习代码! 系统描述 学生成绩管理系统提供了三种角色:学生,老师,网站管理员。主要实现的功能如下: 登录 &a…...
马井堂js设置倒计时页面
js-倒计时页面 提示:这里简述项目相关背景: 例如:项目场景:倒计时需求 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible&…...
C#里第一个WPF程序
WPF程序对界面进行优化,但是比WINFORMS的程序要复杂很多, 并且界面UI基本上不适合拖放,所以需要比较多的时间来布局界面, 产且需要开发人员编写更多的代码。 即使如此,在面对诱人的界面表现, 随着客户对界面的需求提高,还是需要采用这样的方式来实现。 界面的样式采…...
【Java设计模式】第5章 工厂方法模式讲解
5. 工厂方法模式 5.1 工厂方法讲解 定义:定义一个创建对象的接口,由子类决定实例化的类,将对象创建延迟到子类。适用场景: 创建对象需要大量重复代码。客户端不依赖具体产品的创建细节。优点: 符合开闭原则,新增产品只需扩展子类。客户端仅依赖抽象接口,不依赖具体实现…...
PyTorch 生态迎来新成员:SGLang 高效推理引擎解析
SGLang 现已正式融入 PyTorch 生态系统!此次集成确保了 SGLang 符合 PyTorch 的技术标准与最佳实践,为开发者提供了一个可靠且社区支持的框架,助力大规模语言模型(LLM)实现高效且灵活的推理。 如需深入了解 PyTorch…...
时序数据库 TDengine Cloud 私有连接实战指南:4步实现数据安全传输与成本优化
小T导读:在物联网和工业互联网场景下,企业对高并发、低延迟的数据处理需求愈发迫切。本文将带你深入了解 TDengineCloud 如何通过全托管服务与私有连接,帮助企业实现更安全、更高效、更低成本的数据采集与传输,从架构解析到实际配…...
微服务注册中心选择指南:Eureka vs Consul vs Zookeeper vs Nacos
文章目录 引言微服务注册中心概述什么是服务注册与发现选择注册中心的标准 常见的微服务注册中心1. Eureka1.1 理论基础1.2 特点1.3 示例代码 2. Consul2.1 理论基础2.2 特点2.3 示例代码 3. Zookeeper3.1 理论基础3.2 特点3.3 示例代码 4. Nacos4.1 理论基础4.2 特点4.3 示例代…...
Java - WebSocket配置及使用
引入依赖 Spring Boot 默认支持 WebSocket,但需要引入 spring-boot-starter-websocket 依赖,然后重新构建项目 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</arti…...
厦门未来之音:科技与自然共舞的奇幻篇章
故事背景 故事发生在中国福建厦门,描绘未来城市中科技与传统文化深度融合的奇景。通过六大创新场景展现人与自然、历史与未来的和谐共生,市民在智能设施中感受文化传承的力量。 故事内容 从鼓浪屿的声波音乐栈道到BRT天桥上的空中茶园,从修复…...
