oracle中is not null,oracle之is null和is not null的优化
oracle之优化is null语句
一:is null的优化
方法:通过nvl(字段,j)=j的方式,将字段中为空的数据转化为j,从而正常使用索引。
具体实现条件则是:i is null <===> j = nvl(i,j);
注意:使用时必须要确保字段的数据不包含j,例如:(age,15)=15,此时有可能age
内容是15,此时不可以,j的值要变换,保证不再age的范围之内。
函数介绍:
nvl(a,b,c.......):当a为空时取b,当b为空时取c,以此类推。
当然还有另外一种方式解决这个问题:将null包含到索引中
--使用nvl函数的方式(不用添加索引,推荐)
select * from student t where 1=nvl(t.age,1);
--当t.age不存在等于1的数据时等价于
--select * from student t where t.age is null;
--添加索引的方式
create index idx_age_x on tab_i(decode(age,null,1));
select * from student t where decode(t.age,null,1)=1;
二:is not null的优化
方法:结果集不包含j = nvl(i,j)即可
通常情况下使用not exists或者比较大小
示例:
1:not exists
select * from student t where not exists
(select 1 form student s where 1=nvl(s.age,1));
--11g版本后not in和not exists趋于相似,也可以用not in
--当t.col_x不存在等于1的数据时等价于
--select * from student t where t.age is not null;
2:比较大小
--当t.age为总是大于1的数值时
select * from student t where 1
--当t.age为总是小于1的数值时
select * from student t where 1>nvl(t.age,1);
--直接比较大小,暗含了 IS NOT NULL
select * from student t where t.age>1;
3:比较长度
--当t.age的长度总是大于1时
select * from student t where 2<=length(nvl(t.age,1));
--因为length函数的参数为空时,其结果为空,因而不能直接使用length函数
参考链接:
https://blog.csdn.net/qq_38880340/article/details/84290900
oracle中is not null,oracle之is null和is not null的优化相关推荐
- oracle中的guid,在Oracle中使用Guid
在Oracle中使用Guid 在Oracle中使用Guid 在Oracle中可以用SYS_GUID()来生成一个guid,相当于msSql中的newid(). 在Oracle9i和Oracle 10g ...
- oracle数据库insert into,oracle中insert into用法 oracle中insert如何带条件添加数据?
oracle insert into 脚本怎么写 INSE INTO BOOK(bookid,name,price) VALUES('100123','oracle ',54); 或者 INSE IN ...
- oracle中col 的用法,Oracle中的SUM用法讲解,
Oracle中的SUM用法讲解, Oracle中的SUM条件查询 1.按照区域编码分组查询区域编码.IPTV_NBR不为空的数量.ACC_NBR不为空的数量.所有用户数量 SELECT AREA_CO ...
- oracle中pga指什么,oracle中pga内存分配原则
pga_aggregate_target 通常缩写为P_A_T,该参数同时限制全局pga分配和私有工作区内存分配 在oracle9i以及10gr1中,单个sql操作内存使用存在如下限制: 对于串行操作 ...
- oracle中nowait怎么用,oracle中UPDATE nowait 的使用方法介绍
oracle中UPDATE nowait 的使用方法介绍 1.UPDATE nowait 应用以下场景:查询某条数据,并对其开启数据库事务.如果查询的当前数据没有加锁,则正确返回结果,并对当前数据加锁 ...
- oracle中minus什么意思,Oracle Minus关键字
Oracle Minus关键字 SQL中的MINUS关键字 SQL中有一个MINUS关键字,它运用在两个SQL语句上,它先找出第一条SQL语句所产生的结果,然后看这些结果有没有在第二个SQL语句的结果 ...
- oracle中的left函数,Oracle Left Join
oracle函数 的 Oracle Left Join 在本教程中,您将学习如何使用Oracle LEFT JOIN子句来查询多个表中的数据. Oracle LEFT JOIN子句简介 以下语句说明连 ...
- oracle中的循环函数,Oracle日期函数和循环总结
一,日期相关的函数 Select to_char(sysdate,'Q') from dual;--指定日期的季度 Select to_char(sysdate,'MM') from dual;--月 ...
- 在oracle中创建一个序列,Oracle(创建序列)
概念: 所谓序列,在oracle中就是一个对象,这个对象用来提供一个有序的数据列,这个有序的数据列的值都不重复. 1.序列可以自动生成唯一值 2.是一个可以被共享的对象 3.典型的用来生成主键值的一个 ...
- oracle中isnumeric,详细讲解Oracle中isnumeric的三种实现
许多用过ASP的朋友对isnumeric函数都有一定的了解,这是一个常用的判断入参是否为数字的函数.而在Oracle中没有现成的判断是否为数字函数,下面我们就来介绍一下如何用三种方法来将其实现: 1. ...
最新文章
- 图书抄袭何时休,技术人的版权在哪里?
- messenger支持查找附近的人功能吗_最新的 macOS Catalina 正式版,值得更新吗?
- 关闭Android/iPhone浏览器自动识别数字为电话号码
- STRUTS模拟试题
- 对Servlet容器的补充
- java验证码画布类型,【Java工具类】使用Kaptcha生成验证码写回页面中
- ASP.NET MVC 上传图片到项目目录中的文件夹并显示
- 打造×××互连无极限,多WAN口×××防火墙
- 网络访问保护(NAP)技术之详解
- 计算机的进制数思想在哪方面有应用,计算机应用技术问答题(一)
- 深入了解absolute
- Hadoop下虚拟机的创建与克隆
- 【Android】 修复ijkPlayer进行m3u8 hls流播放时seek进度条拖动不准确的问题
- arcgis中python计算面积的表达式_ArcGIS应用——四种计算图斑面积的方法
- error: binding reference of type int to const int discards qualifiers
- Spring Boot做国际化
- python万年历节气_python3实现万年历(包括公历、农历、节气、节日)
- Hi3516A开发--板卡烧写
- Urchin.exe使用说明
- springcontext.xml 中方言是红色的_12种方言都能听懂!讯飞智能录音笔A1评测:小如钥匙坠+复古磁带造型...