当前位置:网站首页>sql is not null 优化(oracle语句索引优化)
sql is not null 优化(oracle语句索引优化)
2022-08-01 12:46:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
IS NULL的优化
优化方法: 通过nvl(字段i,j),将字段i中为空的数据转化为j,从而正常使用索引. 具体则是将条件 i is null 转化为 j = nvl(i,j); 数据量较大时转化is null 在所用oracle版本提升明显, 注意:使用时必须确保字段i的数据不包含j! 缺陷:字段i不能有值为j的数据 另外一种方式是将null包含到索引中
函数介绍: nvl(a,b,c,…) 当a为空时取b,当b为空取c,以此类推.
优化示例
--使用nvl函数的方式(不用添加索引,推荐)
select*from tab_i t where 1=nvl(t.col_x,1);
--当t.col_x不存在等于1的数据时等价于
--select*from tab_i t where t.col_x is null;
--添加索引的方式
create index idx_col_x on tab_i(decode(col_x,null,1));
select*from tab_i t where decode(t.col_x,null,1)=1;IS NOT NULL的优化
优化方法 结果集不包含 j = nvl(i,j)即可,方式多样. 通常情况下可以使用not exists或者比较大小, 这两种效率一般高于比较长度
优化示例
- not exists
select*from tab_i t where not exists
(select 1 form tab_i i where 1=nvl(i.col_x,1));
--11g版本后not in和not exists趋于相似,也可以用not in
--当t.col_x不存在等于1的数据时等价于
--select*from tab_i t where t.col_x is not null;- 比较大小
--当t.col_x为总是大于1的数值时
select*from tab_i t where 1<nvl(t.col_x,1);
--当t.col_x为总是小于1的数值时
select*from tab_i t where 1>nvl(t.col_x,1);
--直接比较大小,暗含了 IS NOT NULL
select*from tab_i t where t.col_x>1;- 比较长度
--当t.col_x的长度总是大于1时
select*from tab_i t where 2<=length(nvl(t.col_x,1));
--因为length函数的参数为空时,其结果为空,因而不能直接使用length函数发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/126517.html原文链接:https://javaforall.cn
边栏推荐
- 浏览器存储
- 易周金融分析 | 银行ATM机智能化改造提速;互联网贷款新规带来挑战
- Simulation implementation of new of Js handwritten function
- Js手写函数之new的模拟实现
- Deep understanding of Istio - advanced practice of cloud native service mesh
- How to successfully pass the CKA exam?
- Grafana9.0发布,Prometheus和Loki查询生成器、全新导航、热图面板等新功能!
- 如何将第三方服务中心注册集成到 Istio ?
- 50W+小程序开发者背后的数据库降本增效实践
- 芝加哥丰田技术学院 | Leveraging Natural Supervision for Language Representation Learning and Generation(利用自然监督进行语言表示学习和生成)
猜你喜欢
随机推荐
软件设计师考点汇总(室内设计师个人总结)
leetcode: 1201. Ugly Number III [Dichotomy + Mathematics + Inclusion and Exclusion Principle]
【StoneDB Class】入门第二课:StoneDB 整体架构解析
leetcode:1201. 丑数 III【二分 + 数学 + 容斥原理】
Based on 10 years of experience in stability assurance, what are the three key questions to be answered in failure recovery?|TakinTalks big coffee sharing
小程序插件如何帮助开发者受益?
多线程案例——阻塞式队列
NebulaGraph v3.2.0 性能报告
库函数的模拟实现(strlen)(strcpy)(strcat)(strcmp)(strstr)(memcpy)(memmove)(C语言)(VS)
【面试高频题】难度 1.5/5,二分经典运用题
win10系统重装,无法登录进行同步的情况下chrome数据恢复
并发编程10大坑,你踩过几个?
Windows 安装PostgreSQL
uniapp读取和写入文件
Qt get all files in a folder
CloudCompare&PCL ICP配准(点到面)
SQL函数 SQRT
SCHEMA solves the puzzle
如何使用 Authing 单点登录,集成 Discourse 论坛?
通讯录(静态版)(C语言)(VS)









