DATEDIFF函数过滤条件改写经验
1、问题之前分享过在列上套用函数会无法使用普通索引影响性能所以对于此类场景优化经常是想办法去掉函数在实际项目上经常遇到一般是对时间条件计算会套用函数今天主要是datediff函数转换思路的分享原始例子如下selectcount(1)from(selectt1.*,DATEDIFF(DAY, TRUNC(t1.ctime), TRUNC(CURRENT_DATE()))AS dayNum fromtestt1,test2 t2 wheret1.idt2.plan_id)t where t.dayNum IN(1,3)计划计划做成hash join被驱动表全表扫描看语句有过滤性较好的条件t.dayNum IN (1, 3)这里是时间计算而来根据普通索引使用原则需要去掉列上的函数即需要把DATEDIFF(DAY, TRUNC(T1.ctime), TRUNC(CURRENT_DATE())) 转换成T1.ctime匹配计算。这里求当前时间-T1.ctime在(1, 3)范围那么相当于当前时间-(1, 3, 7, 15)T1.ctime意味着T1.ctime与当前值比较差值在1天内3天内即((t1.ctimetrunc(CURRENT_DATE)-interval ‘1’ DAY AND t1.ctimetrunc(CURRENT_DATE)-interval ‘3’ DAY AND t1.ctimetrunc(CURRENT_DATE)-interval ‘2’ DAY)然后为了不受or参数影响改写成union 差值1和3没有存在重复值即可用union all2、改写selectcount(1)from(selectt1.*,DATEDIFF(DAY, TRUNC(t1.ctime), TRUNC(CURRENT_DATE()))AS dayNum fromtestt1,test2 t2 wheret1.idt2.plan_id and(t1.ctimetrunc(CURRENT_DATE)-interval1DAY AND t1.ctimetrunc(CURRENT_DATE)-interval0DAY)union allselectt1.*,DATEDIFF(DAY, TRUNC(t1.ctime), TRUNC(CURRENT_DATE()))AS dayNum fromtestt1,test2 t2 wheret1.idt2.plan_id and(t1.ctimetrunc(CURRENT_DATE)-interval3DAY AND t1.ctimetrunc(CURRENT_DATE)-interval2DAY))t计划原始语句1.3s改写完后0.5s这里模拟的数据较少实际上在项目中的原始语句跑1分钟以上改写完秒级执行完。3、小结还是老话如果套用函数的列条件过滤性较好数据量占总数30%以内即要想办法去掉函数。4、测试数据构造create table test(id int primary key,ctime timestamp,c1 varchar2(20));insert intotestselectlevel,SYSDATE-INTERVAL1SECOND * TRUNC(DBMS_RANDOM.VALUE(-100000,1000000)),A||to_char(round(dbms_random.value(1,1000),0))from dual connect by level800000;commit;create table test2(id int primary key,plan_id int,ctime timestamp,c1 varchar2(20));insert into test2selectlevel,round(dbms_random.value(1,100000),0),SYSDATE-INTERVAL1SECOND * TRUNC(DBMS_RANDOM.VALUE(-100000,1000000)),A||to_char(round(dbms_random.value(1,1000),0))from dual connect by level200000;commit;create index IDX_DM_TEST_CTIME on TEST(CTIME);create index IDX_DM_TEST2_PLAN_ID on TEST2(plan_id);dbms_stats.gather_table_stats(USER,TEST,null,100);dbms_stats.gather_table_stats(USER,TEST2,null,100);

相关新闻

SolidWorks_标准零件库18_标准件性能优化

SolidWorks_标准零件库18_标准件性能优化

标准件性能优化:如何用简化显示与轻化模式告别卡顿摘要:在工业设计软件(如SolidWorks、AutoCAD、Creo等)或三维装配体管理系统中,标准件(螺栓、螺母、轴承、垫圈等)往往占据装配体模型数量的70%…

2026/9/23 12:07:19 阅读更多 →
DevOps  SRE 面试真题仓库深度解读:用真实战场替代「Top 50」填充题

DevOps SRE 面试真题仓库深度解读:用真实战场替代「Top 50」填充题

DevOps & SRE 面试真题仓库深度解读:用真实战场替代「Top 50」填充题 核心观点 litu54/DevOps-Interview-Guide 是一个 以真实性为核心竞争力 的开源面试题库——151 份真实候选人的亲历记录、85 家公司、覆盖 2025-2026 年的面试周期。它的定位不是知识清单&…

2026/9/23 0:36:22 阅读更多 →
2026降AI率工具实测红黑榜:10款避坑指南

2026降AI率工具实测红黑榜:10款避坑指南

高校对AI生成内容的检测日趋严格,论文提交前的降AI率已成为刚需。本文从实际测试角度出发,对市面上10款主流降AI率工具做红黑榜评测,帮助读者避开宣传陷阱。 测试方法与评判维度 本次测试选取文科、理工科论文样本各一篇,分别提…

2026/9/23 2:20:24 阅读更多 →

最新新闻

D-PDU API 实战:ISO 22900-2 如何让 UDS 诊断栈跨总线复用

D-PDU API 实战:ISO 22900-2 如何让 UDS 诊断栈跨总线复用

简介:ISO 22900-2:2017 是道路车辆模块化车辆通信接口(MVCI)系列标准中关于诊断协议数据单元(D-PDU)API 的规范性文件。这份中英文对照文档(DeePL 翻译)聚焦 D-Server 如何基于 ODX 运行时数据&…

2026/9/23 22:27:37 阅读更多 →
Play Framework 新应用创建指南:使用 sbt 与 giter8 模板快速搭建 Java / Scala 项目

Play Framework 新应用创建指南:使用 sbt 与 giter8 模板快速搭建 Java / Scala 项目

Play Framework 新应用创建指南:使用 sbt 与 giter8 模板快速搭建 Java / Scala 项目 【免费下载链接】playframework The Community Maintained High Velocity Web Framework For Java and Scala. 项目地址: https://gitcode.com/gh_mirrors/pl/playframework …

2026/9/23 22:27:36 阅读更多 →
Formily Reactive toJS 详解:从 observable 到普通 JS 对象的深度递归转换

Formily Reactive toJS 详解:从 observable 到普通 JS 对象的深度递归转换

前端UI组件 【免费下载链接】formily 📱🚀 🧩 Cross Device & High Performance Normal Form/Dynamic(JSON Schema) Form/Form Builder -- Support React/React Native/Vue 2/Vue 3 项目地址: https://gitcode.com/gh_mirrors…

2026/9/23 22:27:36 阅读更多 →
Kubernetes 边缘节点高可用配置实战:keepalived VIP + Traefik Ingress 单一入口方案(kubernetes-handbook)

Kubernetes 边缘节点高可用配置实战:keepalived VIP + Traefik Ingress 单一入口方案(kubernetes-handbook)

教程云原生容器编排 【免费下载链接】kubernetes-handbook Kubernetes 架构与生态:从云原生到 AI 原生基础设施的构建指南 项目地址: https://gitcode.com/gh_mirrors/ku/kubernetes-handbook 点击查看 免费下载 导读 在 Kubernetes 集群中&#xff0c…

2026/9/23 22:27:36 阅读更多 →
Python二维码与条形码生成识别实战:从批量制作到摄像头实时扫码

Python二维码与条形码生成识别实战:从批量制作到摄像头实时扫码

最近做的一个小工具涉及条形码和二维码的生成与识别,前后折腾了几天,总算把从生成、打印、到扫码入库这套流程完整跑通了。整个过程踩了不少坑,比如pyzbar在Windows上安装失败、批量生成标签时编码乱码、摄像头实时识别时二维码一闪而过却识别…

2026/9/23 22:27:36 阅读更多 →
SpringBoot+Vue全栈宠物业务系统开发实践

SpringBoot+Vue全栈宠物业务系统开发实践

1. 项目概述"134遇见宠爱"宠物业务系统是一个基于SpringBootVue微信小程序的全栈项目,专为宠物服务行业设计。作为一名有5年全栈开发经验的工程师,我在实际开发中发现传统宠物店管理系统往往存在几个痛点:前后端耦合严重导致迭代困…

2026/9/23 22:26:35 阅读更多 →

日新闻

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A…

2026/9/23 0:00:23 阅读更多 →
2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我 刚把开发环境的显示器从1080P换到2K,跑老项目直接报错,版本升级后 API…

2026/9/23 0:01:25 阅读更多 →
3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点 官方文档翻了三遍还是云里雾里?别急,美眉图在实战项目中常被用来做数据可视化,但它的原理比你想的简单。今天咱们直接上手,用一个完整的小项目把美眉图跑通,不再死磕那些冗长的理论说明。…

2026/9/23 0:01:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →