Oracle索引问题汇总
一、oracle 数据库TIMESTAMP 时间字段,设置索引后,通过该字段进行排序,索引排序不生效问题
1. 记录下在工作中遇到的一次索引问题
问题描述:
数据库:oracle;
日志记录表中的一个创建时间(create_time,字段类型timestamp)字段,在该字段设置了索引后,通过该字段进行排序时,索引排序并没有起作用。
解决方式:
将create_time字段类型修改为varchar2类型,格式为 yyyy-MM-dd HH24:mi:ss,再次排序时索引排序生效,效率也提高了不少。难道timestamp排序时索引不能使用吗?具体原因还需要进一步落实,等有时间在深入的了解。
二、oracle 时间条件值范围越大就不走索引问题解决
oracle 时间条件值范围越大就不走索引问题解决:使用强制索引
在写一个比较复杂的统计语句的时候,其中涉及到了时间的条件。但在执行测试过程中发现开始时间和结束时间的范围在两三天的时候执行计划里是走的索引,查询很快,当把时间范围扩大到五天、十天、一个月的时候执行计划里反而全表扫描了,查询效率慢了几十倍不止,这对于统计一个大表来说是致命的。
经过资料查询发现在oracle中有一个因素影响是进行全表扫描还是索引扫描,那就是查找的数据如果超过总数的20%左右,就会影响到扫描方式,不过这只是一个因素,不完全取决于它。这时候,如果对业务清晰,可以尝试使用强制索引,测试查询语句的性能。
使用强制索引,在SELECT 后面加上/…/ 中间加上索引的属性,代码如下:
SELECT /*+index(t pk_emp)*/* FROM EMP T
--强制索引,/*.....*/第一个星星后不能有空格,里边内容结构为:加号index(表名 空格 索引名)。
--如果表用了别名,注释里的表也要使用别名。
在使用了强制索引后发现日期跨度比较大的时候仍然用到了索引,查询速度由原来的一分钟提升到了1-2秒。
————————————————
原文链接:oracle 时间条件值范围越大就不走索引问题解决:使用强制索引_oracle日期大于小于走索引-CSDN博客
三、Oracle小于条件导致索引失效
ORACLE建索引的小发现
基础索引建立
创建一般索引:Non-Unique
创建唯一索引:Unique
对订单表的ACCT_DATE进行查询:
执行计划
小于条件的执行计划: (小于等于执行计划与小于一样)
SQL:
执行计划:
大于条件的执行计划: (大于等于执行计划与大于一样)
SQL:
执行计划:
结论
基础索引建立
创建一般索引:Non-Unique
CREATE INDEX IDX_ORDER_TASK ON IC_GRANT_ORDER (ACCT_DATE ASC);
1
推荐这种,如果需要唯一,可以单加一个唯一约束,这样以后改成非唯一只需要去除约束即可。
创建唯一索引:Unique
CREATE UNIQUE INDEX IDX_ORDER_TASK ON IC_GRANT_ORDER (ACCT_DATE ASC);
1
如果后期要改成非唯一索引,需要删除索引,重新建立
对订单表的ACCT_DATE进行查询:
执行计划
TABLE ACCESS FULL:全表扫描
INDEX RANGE SCAN :索引扫描
TABLE ACCESS BY INDEX ROWID:通过ROWID唯一索引查询
本次建立的是Non-Unique索引,底层会通过索引字段和ROWID组成联合索引,查询时会先查询索引字段,然后查询ROWID快速定位数据。
小于条件的执行计划: (小于等于执行计划与小于一样)
SQL:
explain plan for
select id from IC_GRANT_ORDER where ACCT_DATE<'20200601' and send_status='04';
SELECT * from table(dbms_xplan.display);
1
2
3
执行计划:
Plan hash value: 3153622128
------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 9 | 405 | 718 (1)| 00:00:09 |
|* 1 | TABLE ACCESS FULL| IC_GRANT_ORDER | 9 | 405 | 718 (1)| 00:00:09 |
------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("SEND_STATUS"='04' AND "ACCT_DATE"<'20200601')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
大于条件的执行计划: (大于等于执行计划与大于一样)
SQL:
explain plan for
select id from IC_GRANT_ORDER where ACCT_DATE>'20200623' and send_status='04';
SELECT * from table(dbms_xplan.display);
1
2
3
执行计划:
Plan hash value: 2309823823
----------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 45 | 3 (0)| 00:00:01 |
|* 1 | TABLE ACCESS BY INDEX ROWID| IC_GRANT_ORDER | 1 | 45 | 3 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | IDX_ORDER_TASK | 1 | | 2 (0)| 00:00:01 |
----------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("SEND_STATUS"='04')
2 - access("ACCT_DATE">'20200623')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
结论
sql中的非唯一索引字段判断,如果是包含小于条件,会导致索引失效。大于和等于正常走索引。
小于失效的原因:根据执行计划可知,底层会将非唯一索引与rowid合为联合索引,因此,范围无法使用索引。但是大于为何有效?目前还没有搞清楚
————————————————
原文链接:Oracle小于条件导致索引失效_oracle小于等于走索引吗-CSDN博客
相关文章:
Oracle索引问题汇总
一、oracle 数据库TIMESTAMP 时间字段,设置索引后,通过该字段进行排序,索引排序不生效问题 1. 记录下在工作中遇到的一次索引问题 问题描述: 数据库:oracle; 日志记录表中的一个创建时间(create…...
基于QT用工厂模式实现串口通信与网络通信激光器的控制
配置文件网络配置:IP+Port 串口配置:端口号+波特率 首先,我们需要创建一个配置文件 config.ini,内容如下: [SerialLaser] portName = COM1 baudRate = 9600[NetworkLaser] ipAddress = 192.168.1.1 port = 1234两类激光器的实现: #include <QCoreApplicat…...
【代码随想录Day58】图论Part09
dijkstra(堆优化版)精讲 题目链接/文章讲解:代码随想录 import java.util.*;class Edge {int to; // 邻接顶点int val; // 边的权重Edge(int to, int val) {this.to to;this.val val;} }class Pair<U, V> {public final U first; …...
_或者%关键字模糊匹配查出所有数据
1、问题 sql模糊匹配,如果页面输入_或者%,可以查出所有数据。 (1) SELECT * FROM test WHERE sfsc N and zdzwm like %%% (2) SELECT * FROM test WHERE sfsc N and zdzwm like %_% 2、解决方案 (1)mysql数据库 加转义字…...
【Python】转换得到图片的rgb565格式数据
使用方法:首先在代码同级目录创建input_images文件夹,然后将需要转换的图片放进去。 然后根据你的需要,修改代码最下面的crop_size、resize以及file_name。 最后点击运行,即可得到图片的rgb565格式数据 from PIL import Image, I…...
隨筆 20241024 Kafka中的ISR列表:分区副本的族谱
在分布式系统中,数据的一致性和可靠性至关重要。Apache Kafka作为一个强大的流处理平台,利用其分区和副本机制来确保这些特性。在Kafka中,ISR(In-Sync Replicas)列表是一个关键概念,它用来追踪与领导者副本…...
【python】爬虫
下载与批量下载 import requests #第三方库,没有下载的下载一下 pip install requests#爬虫下载图片 resrequests.get("url") print(res.content)#二进制字节流#写文件 with open("beauty.jpg","wb")as f:f.write(res.content)#批量…...
大语言模型数据类型与环境安装(llama3模型)
文章目录 前言一、代码获取一、环境安装二、大语言模型数据类型1、基本文本指令数据类型2、数学指令数据类型3、几何图形指令数据类型4、多模态指令数据类型5、翻译指令数据类型三、vscode配置四、相关知识内容1、理解softmax内容2、torch相关函数nn.Embedding函数torch.nn.fun…...
JS:列表操作
目录 1、列表截取2、列表数据包含3、列表筛选4、极值操作5、获取列表对象某一属性构建列表6、获取元素在列表中的下标7、列表去重 1、列表截取 列表截取:List.slice(start, end),左闭右开 var dataList [1,2,3,4,5,6] var resultList dataList.slice(0…...
ECharts 折线图 / 柱状图 ,通用配置标注示例
option {tooltip: { // 关于提示框(tooltip)的配置// 显示某一个去掉trigger: axis,显示一起显示 trigger: axistrigger: axis},legend: {top: bottom, // 显示标注位置// textStyle: {// color: "#000", // 设置图例文字颜…...
统计数据集的TXT、XML及JSON标注文件中各类别/每个标签的数量
在计算机视觉和深度学习领域,标注文件是模型训练的重要组成部分。无论是图像分类、目标检测还是图像分割,正确的标注能够显著提升模型的性能。在实际应用中,我们需要快速了解每个类别的样本数量,以便进行数据分析、平衡类别分布或…...
Facebook登录客户追踪:了解用户访问路径,优化客户体验
随着数字化转型的不断加速,精准的客户数据收集和用户行为追踪成为企业提升用户体验和优化业务流程的关键。Facebook登录作为一种便捷的第三方登录方式,已经被广泛应用于各类网站和应用中。它不仅简化了用户的注册与登录流程,还帮助企业获得用…...
NUUO摄像头 debugging_center_utils 远程命令执行漏洞复现
0x01 产品描述: NUUO摄像头是由中国台湾NUUO公司生产的一款网络视频录像机(Network Video Recorder,简称NVR),广泛应用于零售、交通、教育、政府和银行等多个领域。它能够同时管理多个IP摄像头,…...
Nginx 的讲解和案例示范
一、基础理解 1.1 Nginx 是什么? Nginx是一个高性能的 Web 服务器和反向代理服务器,同时也可以作为邮件代理服务器。Nginx 以其高并发处理能力、低内存消耗和丰富的功能受到广泛欢迎。 主要功能: 静态资源服务:高效地提供 HTM…...
微信小程序元素水平居中或垂直居中
最近在做一个微信小程序的项目,其中涉及到css样式实现将<navigator>标签内的图片和文本元素垂直排列,并水平居中。在尝试实现的过程中,将元素在标签内的所有排列情况都顺带实现了。上代码: index.wxml <navigator url&…...
ClickHouse 神助攻:纽约城市公共交通管理(MTA)数据应用挑战赛
本文字数:13198;估计阅读时间:33 分钟 作者:The PME Team 本文在公众号【ClickHouseInc】首发 我们一向对开放数据挑战充满热情,所以当发现 MTA(城市交通管理局)在其官网发起了这样的挑战时&…...
ELK + Filebeat + Spring Boot:日志分析入门与实践(二)
目录 一、环境 1.1 ELKF环境 1.2 版本 1.3 流程 二、Filebeat安装 2.1 安装 2.2 新增配置采集日志 三、logstash 配置 3.1 配置输出日志到es 3.2 Grok 日志格式解析 3.2 启动 logstash 3.3 启动项目查看索引 一、环境 1.1 ELKF环境 springboot项目:w…...
使用 Docker Compose 将数据版 LobeChat 服务端部署
LobeChat 是一个基于 TypeScript 的开源聊天机器人项目,支持本地部署和接入多个大语言模型。本文介绍如何使用 Docker Compose 将 LobeChat 服务端及其数据库部署到生产环境,让您拥有一个私有化的、可定制的 AI 聊天助手。 一、部署前准备 服务器&…...
python如何完成金融领域的数据分析,思路以及常见的做法是什么?
引言 在现代金融领域,数据分析已成为决策支持的重要工具。随着金融市场的复杂性和数据量的激增,传统的分析方法已无法满足需求。 Python作为一种强大的编程语言,凭借其丰富的库和工具,成为金融数据分析的首选语言之一。 本文将探讨如何利用Python进行金融数据分析,包括…...
密码管理工具实现
该文档详细描述了实现一个简单的密码管理工具的过程,工具基于PHP和MySQL构建,支持用户注册、密码存储、管理以及角色权限控制等核心功能。 系统架构设计 技术栈:PHP(后端逻辑)、MySQL(数据存储)…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
Unity中的transform.up
2025年6月8日,周日下午 在Unity中,transform.up是Transform组件的一个属性,表示游戏对象在世界空间中的“上”方向(Y轴正方向),且会随对象旋转动态变化。以下是关键点解析: 基本定义 transfor…...
基于鸿蒙(HarmonyOS5)的打车小程序
1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...
pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决
问题: pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”,…...
GAN模式奔溃的探讨论文综述(一)
简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:...
