oracle中is not null,oracle之is null和is not null的优化「建议收藏」

oracle中is not null,oracle之is null和is not null的优化「建议收藏」oracle之优化isnull语句一:isnull的优化方法:通过nvl(字段,j)=j的方式,将字段中为空的数据转化为j,从而正常使用索引。具体实现条件则是:iisnull<===>j=nvl(i,j);注意:使用时必须要确保字段的数据不包含j,例如:(age,15)=15,此时有可能age内容是15,此时不可以,j的值要变换,保证不再age的范围之内。函数介绍:nv…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179178.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • OpenStack中给wsgi程序写单元測试的方法

    OpenStack中给wsgi程序写单元測试的方法

    2022年1月30日
    39
  • keypad 错误

    keypad 错误always@(posedgeCLKornegedgenRESET)beginif(!nRESET)beginendelsebeginif(key_en)begincase(key_value_1)7’b0001_001:key_value7’b0010_001:key_value7’b0100_001:key_valu

    2022年6月3日
    32
  • 100道最新Java面试题,常见面试题及答案汇总

    除了掌握扎实的专业技能之外,你还需要一份《Java程序员面试宝典》才能在万千面试者中杀出重围,成功拿下offer。小编特意整理了100道Java面试题,送给大家,希望大家都能顺利通过面试,拿下高薪。赶紧码住吧~~Q1:Java内部类和子类之间有什么区别?答案:内部类是指在一个外部类的内部再定义一个类,内部类对外部类有访问权限,可以访问类中定义的所有变量和方法。子类是从父类(superclass)中继承的类,子类可以访问父类所有public和protected的字段和方法。Q2:Java语言中有哪些

    2022年4月16日
    118
  • gridbagconstraints什么意思_gridlayout四个参数

    gridbagconstraints什么意思_gridlayout四个参数gridx,gridy:相对于容器左上角的x,y坐标gridwidth,gridheight:设置组件横向与纵向的单元格跨越个数。weightx,weighty:是否拉伸(0不拉伸,1拉伸)insets:设置元素的位置,类似html的margin,只是顺序有点不一样,依次是上,左,下,右。java.awt.Insets.Insets(inttop,intleft,intbottom,intright)fill:当某个组件未能填满单元格..

    2022年9月9日
    1
  • vscode快捷键重置及快捷键恢复

    vscode快捷键重置及快捷键恢复在用vscode设置快捷键的时候,有的快捷键和自己设置的有重复和冲突现象,为了图方便我把与自己冲突的快捷键都删除了,结果导致键盘的删除按键用不了,相当于自己写的代码无法删除了。最后还是在官网上找到解决办法。 首先找到键盘快捷设置 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20191128152918849.png) ![在这里插入图片描述](http…

    2022年6月9日
    619
  • MapReduce编程模型[通俗易懂]

    MapReduce编程模型[通俗易懂]1.MapReduce简介MapReduce是一个分布式运算程序的编程框架,核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在Hadoop集群上。一个完整的mapreduce程序在分布式运行时有三类实例进程:MRAppMaster负责整个程序的过程调度及状态协调MapTask负责map阶段的整个数据处理流程ReduceTask负责reduce阶段的整个数据处理流程2.MapReduce核心编程思想1)分布式的运算程序往往需要分成至少2个阶段。2

    2022年6月26日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号