最近工作的时候遇到了比较大的数据查询,自己的sql在数据量小的时候没问题,在数据量达到300W的时候特别慢,只有自己优化sql了,以前没有优化过,所以记录下来自己的优化过程,本次是关于is null和is not null的优化。所用环境0racle11g。

现有a表,a表中有字段b,我想查出a表中的b字段is null的数据。

select*fromawherebisnull

我在b字段上建立的索引,但是当条件是is null 和is not null时,执行计划并不会走索引而是全表扫描。此时a表中的数据有310w条记录,执行这段查询花费时间约为0.526秒

优化:

通过函数索引:通过nvl(b,c)将为空的字段转为不为空的c值,这里要确保数据中是不会出现c值的。再在函数nvl(b,c)上建立函数索引

select*fromawherenvl(b,c)=c

此时花费时间约为 0.01秒。

当条件为is not null 时同理可以用 nvl(b,c)<>c来代替

Oracle查询优化之子查询条件优化

环境:oracle 11g

现有a表与b表通过a01字段关联,要查询出a表的数据在b表没有数据的数据;sql如下

selectcount(1)from(selecta.*,(selectcount(1)frombwhereb.a01=a.a01)asflagfroma)whereflag=0

因为flag是虚拟字段没有走不了索引导致这条sql执行起来特别慢 310W条数据查总数花费2秒左右。

利用not exists优化sql如下

selectcount(1)fromawherenotexists(select1frombwherea.a01=b.b01)

利用not exists走索引,执行花费时间大约为0.2秒

【编辑推荐】

【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0

oracle is null效率,Oracle查询优化之is null和is not null优化相关推荐

  1. oracle数据泵效率,oracle技术之oracle 10g数据泵和导入导出性能对比(五)

    前一段时间在一次迁移中同时用到了数据泵和EXP,发现二者效率的差别还是相当大的.这里通过一个例子简单比较一下. 这篇文章讨论影响数据泵导入性能的最大因素. 前面写了几篇文章,分别介绍EXP/IMP与E ...

  2. oracle 分组统计效率,Oracle 分组求和函数(rollup、cube、grouping sets)

    文章目录 1 场景 1.1 概念 1.2 思维导图 1.3 数据准备 2 知识点小结 2.1 group by 2.2 grouping sets:单独分组 2.3 rollup:累计累加 2.4 c ...

  3. oracle怎么定位效率,oracle查询效率,该怎么解决

    SQL codeselect sx201008.stmc stmc,(nvl(sx201008.i_kaizhangsl,0)+nvl(sx201009.i_kaizhangsl,0)+nvl(sx2 ...

  4. oracle的groupby聚合函数效率,Oracle内容概述

    Oracle--01 1.数据管理的发展史 手工管理阶段:一个应用程序对应一组数据,也就是说把数据在程序中固定好 文件管理阶段:一个应用程序对应一组或一个文件,文件中保存的数据. 数据管理阶段:就是通 ...

  5. oracle 查询空值异常,Oracle中的NULL

    这篇文档讨论一下NULL和索引的关系. 前面几篇文章讨论了NULL的数据类型和NULL的运算特点.这里打算简单描述NULL和索引的关系. 如果说NULL类型已经比较容易出错了,那么索引问题就让NULL ...

  6. oracle根据null排序,oracle 关于null值排序

    在oracle中根据字段来desc排序的话null值可能会在数据的最前面.然而有时候我们查看数据的时候并不希望能够在前面看到这些null值的排序数据. 因此我查了一下: 1.排序的时候运用nvl(). ...

  7. oracle中入库判断空串,不同数据库和SpringDataJPA对字段值null,''空值的判断

    原由:在使用SpringDataJPA语句进行对数据库表的某个字段的空值查询时,如: findByIdAndNameIsNull findByIdAndNameIsNotNull 当name这个字段值 ...

  8. oracle group by效率问题,性能优化-group by的优化

    4.group by的优化 最好使用同一表中的列, 需求:每个演员所参演影片的数量-(影片表和演员表) explain select actor.first_name,actor.last_name, ...

  9. oracle 重设基线,Oracle SQL执行计划基线总结(SQL Plan Baseline)

    一.基础概念 Oracle 11g开始,提供了一种新的固定执行计划的方法,即SQL plan baseline,中文名SQL执行计划基线(简称基线),可以认为是OUTLINE(大纲)或者SQL PRO ...

最新文章

  1. python发明者叫什么-python是谁的
  2. STL源代码分析(ch 1)组态2
  3. wxWidgets:wxHtmlHelpWindow类用法
  4. 介绍 Echoo: go 语言编写的 echo 服务器
  5. Python Tuple:一文彻底粉碎元组
  6. php7 on winxp 支持的模块
  7. 解开发者之痛:中国移动MySQL数据库优化最佳实践
  8. php获取localstorage的值,localStorage的设置和取值Demo
  9. java.lang.IllegalArgumentException: An invalid character [10] was present in the Cookie value
  10. Towards Fully 8-bit Integer Inference for the Transformer Model
  11. 华为HG255D超级管理员密码
  12. 安装 Zabbix 详细教程
  13. 列车停站方案_城市轨道交通列车停站方案
  14. AppCrash explorer问题(解决方法)
  15. day56 JavaScript
  16. 在线gif图片压缩,如何压缩gif动图大小
  17. linux计划定时自动删除目录下文件
  18. python输入输入:input、map
  19. 初级计算机考试j机试题库,计算机初级考试试题-1
  20. 小学语文一年级~六年级生字表合集描红临摹字帖PDF直接A4纸打印版

热门文章

  1. python测试网络连通性_Python测试网络连通性示例【基于ping】
  2. python获取一个月之前日期_Python 获取几天前的时间
  3. cnpm 网络不能连接_(二十七)通俗易懂理解——Resnet残差网络
  4. QColorDialog中Pick Screen Color、Ok、Cancel不能汉化解决
  5. Android studio3.0打开Device File Explore(文件管理器)的方法(图文教程)
  6. iOS 静态度制作方法详细
  7. excel获取mysql数据库数据类型_js如何读取excel数据库数据库数据类型
  8. 猪行天下之Python基础——1.1 Python开发环境搭建
  9. 中小企业利用VRRP实现链路负载均衡
  10. NPM酷库:dateformat 时间字符串格式化