oracle is null效率,Oracle查询优化之is null和is not null优化
最近工作的时候遇到了比较大的数据查询,自己的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优化相关推荐
- oracle数据泵效率,oracle技术之oracle 10g数据泵和导入导出性能对比(五)
前一段时间在一次迁移中同时用到了数据泵和EXP,发现二者效率的差别还是相当大的.这里通过一个例子简单比较一下. 这篇文章讨论影响数据泵导入性能的最大因素. 前面写了几篇文章,分别介绍EXP/IMP与E ...
- 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 ...
- oracle怎么定位效率,oracle查询效率,该怎么解决
SQL codeselect sx201008.stmc stmc,(nvl(sx201008.i_kaizhangsl,0)+nvl(sx201009.i_kaizhangsl,0)+nvl(sx2 ...
- oracle的groupby聚合函数效率,Oracle内容概述
Oracle--01 1.数据管理的发展史 手工管理阶段:一个应用程序对应一组数据,也就是说把数据在程序中固定好 文件管理阶段:一个应用程序对应一组或一个文件,文件中保存的数据. 数据管理阶段:就是通 ...
- oracle 查询空值异常,Oracle中的NULL
这篇文档讨论一下NULL和索引的关系. 前面几篇文章讨论了NULL的数据类型和NULL的运算特点.这里打算简单描述NULL和索引的关系. 如果说NULL类型已经比较容易出错了,那么索引问题就让NULL ...
- oracle根据null排序,oracle 关于null值排序
在oracle中根据字段来desc排序的话null值可能会在数据的最前面.然而有时候我们查看数据的时候并不希望能够在前面看到这些null值的排序数据. 因此我查了一下: 1.排序的时候运用nvl(). ...
- oracle中入库判断空串,不同数据库和SpringDataJPA对字段值null,''空值的判断
原由:在使用SpringDataJPA语句进行对数据库表的某个字段的空值查询时,如: findByIdAndNameIsNull findByIdAndNameIsNotNull 当name这个字段值 ...
- oracle group by效率问题,性能优化-group by的优化
4.group by的优化 最好使用同一表中的列, 需求:每个演员所参演影片的数量-(影片表和演员表) explain select actor.first_name,actor.last_name, ...
- oracle 重设基线,Oracle SQL执行计划基线总结(SQL Plan Baseline)
一.基础概念 Oracle 11g开始,提供了一种新的固定执行计划的方法,即SQL plan baseline,中文名SQL执行计划基线(简称基线),可以认为是OUTLINE(大纲)或者SQL PRO ...
最新文章
- python发明者叫什么-python是谁的
- STL源代码分析(ch 1)组态2
- wxWidgets:wxHtmlHelpWindow类用法
- 介绍 Echoo: go 语言编写的 echo 服务器
- Python Tuple:一文彻底粉碎元组
- php7 on winxp 支持的模块
- 解开发者之痛:中国移动MySQL数据库优化最佳实践
- php获取localstorage的值,localStorage的设置和取值Demo
- java.lang.IllegalArgumentException: An invalid character [10] was present in the Cookie value
- Towards Fully 8-bit Integer Inference for the Transformer Model
- 华为HG255D超级管理员密码
- 安装 Zabbix 详细教程
- 列车停站方案_城市轨道交通列车停站方案
- AppCrash explorer问题(解决方法)
- day56 JavaScript
- 在线gif图片压缩,如何压缩gif动图大小
- linux计划定时自动删除目录下文件
- python输入输入:input、map
- 初级计算机考试j机试题库,计算机初级考试试题-1
- 小学语文一年级~六年级生字表合集描红临摹字帖PDF直接A4纸打印版
热门文章
- python测试网络连通性_Python测试网络连通性示例【基于ping】
- python获取一个月之前日期_Python 获取几天前的时间
- cnpm 网络不能连接_(二十七)通俗易懂理解——Resnet残差网络
- QColorDialog中Pick Screen Color、Ok、Cancel不能汉化解决
- Android studio3.0打开Device File Explore(文件管理器)的方法(图文教程)
- iOS 静态度制作方法详细
- excel获取mysql数据库数据类型_js如何读取excel数据库数据库数据类型
- 猪行天下之Python基础——1.1 Python开发环境搭建
- 中小企业利用VRRP实现链路负载均衡
- NPM酷库:dateformat 时间字符串格式化