oracle数据库索引失效情况总结

场景:

在开发中有时候遇到某个表中的列明明是创建了索引,但查询时却发现索引失效。

环境:

下面是工作流activiti中的两张表act_hi_procinst、act_hi_taskinst关系是一对多(一个流程包含多个流程环节),一个是历史流程表,一个是历史流程环节表。

索引失效情况及验证 :

(单表act_hi_procinst已经在delete_reason_列上创建了索引 )

验证一:索引列为is null 和 is not null时,索引失效

select * from act_hi_procinst t where t.delete_reason_ is not null;

select * from act_hi_procinst t where t.delete_reason_ is  null;

 全表扫描,该列索引失效

select * from act_hi_procinst t where t.delete_reason_ ='ACTIVITI_DELETED' and rownum < 1000; 

 索引生效,Oracle 数据库使用索引范围扫描方式。这种扫描方式通过索引键值的范围来定位需要的数据。

select * from act_hi_procinst t where t.delete_reason_ is not null
and t.start_time_ between TO_DATE('2023-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
and  TO_DATE('2023-12-31 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
and rownum < 1000

 结论一:

经验证索引列查询使用is null 和 is not null则该列索引失效。

验证二:索引列为 !=和 <> 时会导致该索引列失效

select * from act_hi_procinst t where   t.delete_reason_ !='ACTIVITI_DELETED';

select * from act_hi_procinst t where   t.delete_reason_ <>'ACTIVITI_DELETED';

结论二:

经验证索引列查询使用 !=和 <> 时会导致该索引列失效

验证三:索引列用函数处理则该索引会失效

 select * from act_hi_procinst t where  to_char(start_time_,'YYYY')= '2023'

结论三:
索引列用函数处理则该索引会失效,如字符串函数trunc,to_char,substring,to_date等函数

区别下面的sql(下面的sql走索引)

select * from act_hi_procinst t  where   t.start_time_ >= TO_DATE('2023-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS');

验证四:索引列使用like的前置%查询,则该索引列失效。

select * from act_hi_procinst t where t.business_key_ like '%20230103-0000102'

like 使用后置百分号走索引

结论四:

经验证索引列使用like的前置%查询时会导致该索引列失效,但是使用了ike的后置%则会走索引

验证五:范围索引查询和等值索引查询同时存在,则范围索引失效

其中start_time_创建有普通索引,delete_reason_字段也创建了普通索引


SQL一:

select * from act_hi_procinst t where  t.start_time_ 
between TO_DATE('2023-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
and  TO_DATE('2023-12-31 00:00:00', 'YYYY-MM-DD HH24:MI:SS') 
and  t.delete_reason_ ='ACTIVITI_DELETED'
and rownum < 1000;

SQL二:

select * from act_hi_procinst t
where  t.start_time_ >= TO_DATE('2023-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
and t.start_time_<= TO_DATE('2023-12-31 00:00:00', 'YYYY-MM-DD HH24:MI:SS') 
and  t.delete_reason_ ='ACTIVITI_DELETED'
and rownum < 1000

结论五:

范围索引查询和等值索引查询同时存在,则范围索引失效

注:上面的查询sql中加 rownum < 1000的目的主要是数据量太大,这里只是要验证一下查询是否走索引列 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/369629.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【乳腺肿瘤诊断分类及预测】基于自适应SPREAD-PNN概率神经网络

课题名称&#xff1a;基于自适应SPREAD-PNN的乳腺肿瘤诊断分类及预测 版本日期&#xff1a;2023-06-15 运行方式: 直接运行PNN0501.m 文件即可 代码获取方式&#xff1a;私信博主或QQ&#xff1a;491052175 模型描述&#xff1a; 威斯康辛大学医学院经过多年的收集和整理&…

使用Python和HTTP代理进行API请求

Python&#xff0c;这个简单易学又功能强大的编程语言&#xff0c;在网络爬虫、数据分析、自动化任务等领域都有着广泛的应用。而当我们需要从外部网站获取数据时&#xff0c;API&#xff08;应用程序接口&#xff09;就成了我们的得力助手。但有时候&#xff0c;某些网站会对A…

机器学习_15_贝叶斯算法

文章目录 1 贝叶斯定理相关公式2 朴素贝叶斯算法2.1 朴素贝叶斯算法推导2.2 朴素贝叶斯算法流程 3 高斯朴素贝叶斯4 伯努利朴素贝叶斯5 多项式朴素贝叶斯6 贝叶斯网络6.1 最简单的一个贝叶斯网络6.2 全连接贝叶斯网络6.3 “正常”贝叶斯网络6.4 实际贝叶斯网络&#xff1a;判断…

陪女朋友学习计算机二级之数据库笛卡尔积和自然连接

数据库中的基本关系运算 交 和数学中的交集类似&#xff0c;但是需要相同的表模式 如果俩个表有相同的关系模式如表1为&#xff08;ID&#xff0c;姓名&#xff0c;学号&#xff09;表2为ID&#xff0c;姓名&#xff0c;学号&#xff09; 表1 表2 交之后就可以变成 并 和数…

SpringBoot数据访问复习

SpringBoot数据访问复习 数据访问准备 引入jdbc所需要的依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency> 原理分析 导入的启动器引入了两个…

计算机软件能力认证考试CCF-202312-1 仓库规划

#自己跑的测试没问题&#xff0c;不知道为啥就是不能满分 原理比较绕&#xff0c;就是让数组中一行不断地与其他行进行比较&#xff0c;最终得到各自的索引 #include <iostream> using namespace std; int main() {int n;int m;cin>>n>>m; int array[n][m];…

点击图形查看

使用zabbix查看监控图像信息&#xff0c;发现会有中文乱码现象。 解决方法如下&#xff1a; 1.拷贝windows文字文件到服务器上 C:\Windows\Fonts目录下拷贝自己需要的中文语言文件 2.修改配置文件 vim /usr/share/zabbix/include/defines.inc.php 81行 define(ZBX_GRAPH_F…

iview DatePicker 日期选择组件在弹窗中使用transfer,导致选择日期弹窗会关闭的问题

背景&#xff1a;在弹窗里面使用日期选择组件&#xff0c;选择组件的面板被弹窗遮挡了部分&#xff0c;所以需要使用transfer属性&#xff0c;但是使用之后组件面板插入body中了&#xff0c;面板的事件会导致弹窗关闭。 解决方案&#xff1a; 添加上transfer属性和指定的date-…

高级FPGA开发之基础协议PCIe

基础协议之PCIe部分 一、TLP包的包头 在PCIe的系统中&#xff0c;tlp包的包头的结构有许多部分是相似的&#xff0c;通过掌握这些常规的包头&#xff0c;能帮助理解在PCIe总线上各个设备之间如何进行数据的收发。 通用的字段 通用字段作用Fmt决定了包头是3DW还是3DW&#xff…

软件测试学习笔记-测试用例的编写

7中测试分类 按照阶段可划分单元测试、集成测试、系统测试、验收测试。代码可见度划分黑盒测试、灰盒测试、白盒测试 单元测试&#xff1a;针对源代码的测试 集成测试&#xff1a;针对接口进行测试 系统测试&#xff1a;针对功能和非功能的测试 验收测试&#xff1a;公测、内测…

中科方德桌面操作系统的安装方法

原文链接&#xff1a;中科方德桌面操作系统的安装方法 大家好&#xff01;继我们之前介绍了如何在VMware Workstation上安装统信UOS、麒麟OS及麒麟信安操作系统之后&#xff0c;今天我为大家带来一篇全新的教程——在VMware Workstation上安装中科方德桌面操作系统的详细步骤。…

《云原生安全攻防》-- 容器安全风险分析

在本节课程中&#xff0c;我们将提供一个全面的视角&#xff0c;来深入探讨容器环境下的安全风险&#xff0c;帮忙大家建立起容器环境下安全风险的整体认知。 在这个课程中&#xff0c;我们将学习以下内容&#xff1a; 容器技术概述&#xff1a;什么是容器技术以及它解决了什么…

task2:Verilog编写的设计模块在模块内部直接调用task

Verilog编写的设计模块在模块内部直接调用task 1&#xff0c;概念2&#xff0c;模块设计2.1&#xff0c;RTL设计2.2&#xff0c;tb测试代码2.3&#xff0c;sim仿真输出 参考文献&#xff1a; 1&#xff0c;练习七-在Verilog中使用任务task 1&#xff0c;概念 在模块设计中&…

【Docker进阶】镜像制作-用快照制作Docker镜像

进阶一 docker镜像制作 文章目录 进阶一 docker镜像制作1. 镜像制作及原因2. Docker镜像制作的方式3. 快照制作镜像 1. 镜像制作及原因 镜像制作是因为某种需求&#xff0c;官方的镜像无法满足需求&#xff0c;需要我们通过一定手段来自定义镜像来满足要求。 制作镜像往往有…

STM32--SPI通信协议(2)W25Q64简介

一、W25Q64简介 1、W25Qxx中的xx是不同的数字&#xff0c;表示了这个芯片不同的存储容量&#xff1b; 2、存储器分为易失性与非易失性&#xff0c;主要区别是存储的数据是否是掉电不丢失&#xff1a; 易失性存储器&#xff1a;SRAM、DRAM&#xff1b; 非易失性存储器&#xff…

0基础学习VR全景平台篇第141篇:如何制作卫星航拍全景

大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 很多人都看过或者拍摄过航拍全景&#xff0c;其效果相比于普通的地拍的确有着更加震撼的拍摄效果&#xff0c;但是受限于无人机高度&#xff0c;以及禁飞区等等限制&#xff0c;导致很多大场景无法展示完全&a…

DS18B20温度传感器

文章目录 一、介绍DS18B20了解DS18B20引脚及电路图内部结构框图存储器结构单总线&#xff08;1 wire bus&#xff09;介绍单总线电路规范单总线时序结构初始化发送一个数据接收一位数据发送一个字节与接收一个字节 DS18B20操作流程所要使用的数据帧温度存储格式 二、实现温度检…

大数据信用报告在线查询平台哪个好?

随着大数据技术在金融风控的运用&#xff0c;大数据信用越来越被人熟知&#xff0c;由于线下没有查询大数据信用的地方&#xff0c;想要查询大数据信用报告只有在线上查询&#xff0c;那大数据信用报告在线查询平台哪个好呢?本文贷你一起去了解市面上比较好的三个平台。 大数据…

风控安全产品系统设计

风控业务架构 我把风控业务架构的分层分为6层,分别是组件层、业务层、决策层、能力层、计算层、可视层。 以下基建为基础安全产品的简称。 组件层 组件层的职责是:数据收集与行为反制。 从接口、设备、行为三个维度进行数据收集,接收决策层的指令进行行为反制。为了保证…

Alt + TAB 禁止在 Edge 标签页之间切换

&#xff08;原文&#xff1a;https://blog.iyatt.com/?p13587 &#xff09; 浏览器标签页之间切换可以用 {Ctrl}{Tab} 或者 {Ctrl}{数字}精准到标签页码&#xff0c;结果 Windows 11 默认把 Edge 标签页切换混入了 {Alt}{Tab} 前台应用窗口切换&#xff0c;经常不注意是在 Ed…