当前位置:网站首页>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
边栏推荐
- 批量任务导入到数据库中
- formatdatetime函数 mysql(date sub函数)
- Process sibling data into tree data
- 重磅消息 | Authing 实现与西门子低代码平台的集成
- 那些利用假期学习的职场人,后来都怎么样了?
- Do wildcard SSL certificates not support multiple domains?
- R language ggplot2 visualization: use the ggdensity function of the ggpubr package to visualize density plots, use the stat_central_tendency function to add mean vertical lines to the density and cust
- Alibaba Cloud Official Redis Development Specification
- Six Stones Programming: Problems must be faced, methods must be skillful, and functions that cannot be done well must be solved
- Qt get all files in a folder
猜你喜欢
随机推荐
pandas connects to the oracle database and pulls the data in the table into the dataframe, filters all the data from the current time (sysdate) to one hour ago (filters the range data of one hour)
芝加哥丰田技术学院 | Leveraging Natural Supervision for Language Representation Learning and Generation(利用自然监督进行语言表示学习和生成)
VINS-mono 论文解读:IMU预积分+Marg边缘化
初级必备:单例模式的7个问题
Why does the maximum plus one equal the minimum
什么是一致性哈希?可以应用在哪些场景?
windows IDEA + PHP+xdebug 断点调试
markdown常用数学符号cov(markdown求和符号)
STM32 CAN过滤器配置详解
STM32 CAN filter configuration details
Fault 007: The dexp derivative is inexplicably interrupted
测试发文
并发编程10大坑,你踩过几个?
库函数的模拟实现(strlen)(strcpy)(strcat)(strcmp)(strstr)(memcpy)(memmove)(C语言)(VS)
关于亚马逊测评,你了解多少?
达梦更换正式授权dm.key
力扣160题,相交链表
Envoy source code flow chart
计算器:中缀表达式转后缀表达式
CAN通信标准帧和扩展帧介绍









