sql is not null 优化(oracle语句索引优化)

oracle优化:ISNULL的优化优化方法:通过nvl(字段i,j),将字段i中为空的数据转化为j,从而将条件iisnull转化为j=nvl(i,j);转化isnull在所用oracle版本提升明显,注意:使用时必须确保字段i的数据不包含j!函数介绍:nvl(a,b,c,…)当a为空时取b,当b为空取c,以此类推.优化示例select*fromtab_i…

大家好,又见面了,我是你们的朋友全栈君。

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或者比较大小,
这两种效率一般高于比较长度

优化示例

  1. 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;
  1. 比较大小
--当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;
  1. 比较长度
--当t.col_x的长度总是大于1时
select*from tab_i t where 2<=length(nvl(t.col_x,1));
--因为length函数的参数为空时,其结果为空,因而不能直接使用length函数
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • 用Python发免费短信的正确姿势

    用Python发免费短信的正确姿势前言今天带大家来玩一玩,如何用Python来实现免费短信。关于发短信,其实适用场景还挺多的。只有你想不到的场景,没有玩不转的场景!比如作为一个IT人员,经常会有监控服务器之说,那么自动告警的短信或者来电就显得非常重要了。再比如,你可以用发短信的功能,自己来实现一个温馨天气预报提示给你的爸爸妈妈。。。等等下面进入今天的主题-twilio网站。https://www.twilio.com/console准备工作先来介绍下这个网站主要用于发短信和来电,提供了完备的相关api。而

    2022年5月1日
  • 常见计算机病毒种类及特征介绍与分析

    常见计算机病毒种类及特征介绍与分析什么是计算机病毒通俗来讲,计算机病毒是一个程序,一段可执行代码。它可以很快地通过网络、U盘等蔓延,又常常难以根除。它能影响计算机使用,并且具有破坏性,复制性和传染性。病毒又分为很多种类,下面,我就来说说最常见的一些病毒吧!系统病毒系统病毒的前缀为:Win32、PE、Win95、W32、W95等。这些病毒的一般共有的特性是可以感染windows操作系统的*.exe和*.dll

    2022年5月3日
  • navicat永久激活码最新【永久激活】

    (navicat永久激活码最新)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~MLZP…

    2022年3月21日
  • canoe入门教程_canoe编程

    canoe入门教程_canoe编程转自:https://www.cnblogs.com/fengliu-/p/7844072.htmlCANOE入门(一)CANoe是Vector公司的针对汽车电子行业的总线分析工具,现在我用CANoe7.6版本进行介绍,其他版本功能基本差不多。硬件我使用的是CANcaseXL.1,CANoe软件的安装很简单,先装驱动,再装软件。安装完成,插上USB,连接硬件,这样在控制面板中,…

    2022年10月29日
  • STM32的IWDG(独立看门狗)详细用法

    STM32的IWDG(独立看门狗)详细用法文章出处:https://www.cnblogs.com/Liu-Jing/p/7243029.html章参考资料:《STM32F4XX中文参考手册》IWDG章节。1、IWDG简介:  STM32有两个看门狗,一个是独立看门狗另外一个是窗口看门狗,独立看门狗号称宠物狗,窗口看门狗号称警犬,本章我们主要分析独立看门狗的功能框图和它的应用。独立看门狗用通俗一点的话来解释就是一个12位的递减计…

    2022年6月14日
  • 屏幕可以截图识别文字?我来教你

    屏幕可以截图识别文字?我来教你我们经常浏览一些网页的时候,看到一些优美的文字,想将它复制下来,却发现粘贴的时候都是一些乱码之类的,以前我估计你们大多数的人都会选择用手抄,但是今天我来了,我给大家介绍一个非常有用的一个方法,让你完全不用手抄,那就是截图识别啦!接下来我就给大家介绍一下步骤。![在这里插入图片描述](https://img-blog.csdnimg.cn/20190621180907878.jpg?x…

    2022年6月6日

发表回复

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

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