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的优化相关推荐

  1. oracle中的guid,在Oracle中使用Guid

    在Oracle中使用Guid 在Oracle中使用Guid 在Oracle中可以用SYS_GUID()来生成一个guid,相当于msSql中的newid(). 在Oracle9i和Oracle 10g ...

  2. oracle数据库insert into,oracle中insert into用法 oracle中insert如何带条件添加数据?

    oracle insert into 脚本怎么写 INSE INTO BOOK(bookid,name,price) VALUES('100123','oracle ',54); 或者 INSE IN ...

  3. oracle中col 的用法,Oracle中的SUM用法讲解,

    Oracle中的SUM用法讲解, Oracle中的SUM条件查询 1.按照区域编码分组查询区域编码.IPTV_NBR不为空的数量.ACC_NBR不为空的数量.所有用户数量 SELECT AREA_CO ...

  4. oracle中pga指什么,oracle中pga内存分配原则

    pga_aggregate_target 通常缩写为P_A_T,该参数同时限制全局pga分配和私有工作区内存分配 在oracle9i以及10gr1中,单个sql操作内存使用存在如下限制: 对于串行操作 ...

  5. oracle中nowait怎么用,oracle中UPDATE nowait 的使用方法介绍

    oracle中UPDATE nowait 的使用方法介绍 1.UPDATE nowait 应用以下场景:查询某条数据,并对其开启数据库事务.如果查询的当前数据没有加锁,则正确返回结果,并对当前数据加锁 ...

  6. oracle中minus什么意思,Oracle Minus关键字

    Oracle Minus关键字 SQL中的MINUS关键字 SQL中有一个MINUS关键字,它运用在两个SQL语句上,它先找出第一条SQL语句所产生的结果,然后看这些结果有没有在第二个SQL语句的结果 ...

  7. oracle中的left函数,Oracle Left Join

    oracle函数 的 Oracle Left Join 在本教程中,您将学习如何使用Oracle LEFT JOIN子句来查询多个表中的数据. Oracle LEFT JOIN子句简介 以下语句说明连 ...

  8. oracle中的循环函数,Oracle日期函数和循环总结

    一,日期相关的函数 Select to_char(sysdate,'Q') from dual;--指定日期的季度 Select to_char(sysdate,'MM') from dual;--月 ...

  9. 在oracle中创建一个序列,Oracle(创建序列)

    概念: 所谓序列,在oracle中就是一个对象,这个对象用来提供一个有序的数据列,这个有序的数据列的值都不重复. 1.序列可以自动生成唯一值 2.是一个可以被共享的对象 3.典型的用来生成主键值的一个 ...

  10. oracle中isnumeric,详细讲解Oracle中isnumeric的三种实现

    许多用过ASP的朋友对isnumeric函数都有一定的了解,这是一个常用的判断入参是否为数字的函数.而在Oracle中没有现成的判断是否为数字函数,下面我们就来介绍一下如何用三种方法来将其实现: 1. ...

最新文章

  1. 图书抄袭何时休,技术人的版权在哪里?
  2. messenger支持查找附近的人功能吗_最新的 macOS Catalina 正式版,值得更新吗?
  3. 关闭Android/iPhone浏览器自动识别数字为电话号码
  4. STRUTS模拟试题
  5. 对Servlet容器的补充
  6. java验证码画布类型,【Java工具类】使用Kaptcha生成验证码写回页面中
  7. ASP.NET MVC 上传图片到项目目录中的文件夹并显示
  8. 打造×××互连无极限,多WAN口×××防火墙
  9. 网络访问保护(NAP)技术之详解
  10. 计算机的进制数思想在哪方面有应用,计算机应用技术问答题(一)
  11. 深入了解absolute
  12. Hadoop下虚拟机的创建与克隆
  13. 【Android】 修复ijkPlayer进行m3u8 hls流播放时seek进度条拖动不准确的问题
  14. arcgis中python计算面积的表达式_ArcGIS应用——四种计算图斑面积的方法
  15. error: binding reference of type int to const int discards qualifiers
  16. Spring Boot做国际化
  17. python万年历节气_python3实现万年历(包括公历、农历、节气、节日)
  18. Hi3516A开发--板卡烧写
  19. Urchin.exe使用说明
  20. springcontext.xml 中方言是红色的_12种方言都能听懂!讯飞智能录音笔A1评测:小如钥匙坠+复古磁带造型...

热门文章

  1. CSDN2018博客之星评选结果预测第二弹
  2. 如何检测页面是否允许访问Cookie
  3. html 操作cookie,HtmlUnit 模拟浏览器以及Cookie使用示例
  4. R语言二进制grd文件读取合并导出
  5. Ubuntu 16.04安装搜狗拼音
  6. 苹果电脑一直密码错误_您可能一直都在犯的安全和密码错误
  7. java 实现 excel 去重,excel实现筛选去重操作
  8. 编程题:首尾相连的字符串
  9. 腾讯云服务器架设mir2
  10. 制作一个简单的大数据看板(FineReport-帆软)