大数据项目中的Oracle查询优化
今天发现自己之前写的一些SQL查询在执行效率方面非常不理想,于是尝试做了些改进。
需求为查询国地税表和税源表中,国税有而税源没有的条目数,之前的查询如下:
SELECT COUNT(NAME)
FROM(SELECT TAX_INFO_GD.NAME,
TAX_INFO.NSR,
TAX_INFO_GD.SH_ID,
TAX_INFO.SHXYDM,
TAX_INFO_GD.SYLX,
TAX_INFO_GD.JDXZ,
TAX_INFO_GD.STATE GDSTATE
FROM TAX_INFO_GD
LEFT JOIN TAX_INFO
ON TAX_INFO_GD.NAME = TAX_INFO.NSR
OR TAX_INFO_GD.SH_ID = TAX_INFO.SHXYDM)
WHERE NSR is null
and SHXYDM is null
and (SYLX = OR SYLX = )
and GDSTATE='正常';

改进过后的代码:
SELECT COUNT(*)
FROM TAX_INFO_GD B
WHERE (SELECT COUNT() ASnum
FROM TAX_INFO A
WHERE A.NSR = B.NAME
AND A.SHXYDM = B.SH_ID) =
AND B.STATE = '正常'
AND (B.SYLX = '' OR B.SYLX = '');

两段查询语句查询出的结果是一样的,
第一种查询思路是先将国地税表和税源表做左链接,这也就意味着形成的临时表是以国地税表为主体,将税源表所有字段横向追加到国地税表中的一张大表,比国地税表的字段数量更多。在形成这张临时表之后再做一次符合条件的查询。
而第二种查询方式的主体思路是先在一张表中筛选,筛选出的数据就是另外一张表的查询条件。
这里只有结果,不做结论,因为orcale内部是何种数据结构如何运行我们不得而知,贸然的主观猜测可能会误人子弟。
大数据项目中的Oracle查询优化的更多相关文章
- 大数据项目中js中代码和java中代码(解决Tomcat打印日志中文乱码)
Idea2018中集成Tomcat9导致OutPut乱码找到tomcat的安装目录,打开logging.properties文件,增加一行代码,覆盖默认设置,将日志编码格式修改为GBK.java.ut ...
- Hbase和Hive在大数据架构中处在不同位置
先放结论:Hbase和Hive在大数据架构中处在不同位置,Hbase主要解决实时数据查询问题,Hive主要解决数据处理和计算问题,一般是配合使用.一.区别:Hbase: Hadoop database ...
- 大数据项目实践:基于hadoop+spark+mongodb+mysql+c#开发医院临床知识库系统
一.前言 从20世纪90年代数字化医院概念提出到至今的20多年时间,数字化医院(Digital Hospital)在国内各大医院飞速的普及推广发展,并取得骄人成绩.不但有数字化医院管理信息系统(HIS ...
- 大数据项目测试<二>项目的测试工作
大数据的测试工作: 1.模块的单独测试 2.模块间的联调测试 3.系统的性能测试:内存泄露.磁盘占用.计算效率 4.数据验证(核心) 下面对各个模块的测试工作进行单独讲解. 0. 功能测试 1. 性能 ...
- 大数据项目相关技术栈(Hadoop周边技术)
J2EE 框架Spring 开发框架 + SSH or SSM Lucene 索引和查询IKAnalyzer 分词Webmagic 爬虫 ETL工具:KettleSqoop 结构化数据库-hadoop ...
- 如何在IDEA里给大数据项目导入该项目的相关源码(博主推荐)(类似eclipse里同一个workspace下单个子项目存在)(图文详解)
不多说,直接上干货! 如果在一个界面里,可以是单个项目 注意:本文是以gradle项目的方式来做的! 如何在IDEA里正确导入从Github上下载的Gradle项目(含相关源码)(博主推荐)(图文详解 ...
- 大数据项目(MTDAP)随想
Spark MLlib进行example测试的时候,总是编译不通过,报少包<Spark MLlib NoClassDefFoundError: org/apache/spark/ml/param ...
- 聊聊自学大数据flume中容易被人忽略的细节
前言:老刘不敢保证说的有多好,但绝对是非常良心地讲述自学大数据开发路上的一些经历和感悟,保证会讲述一些不同于别人技术博客的细节. 01 自学flume的细节 老刘现在想写点有自己特色的东西,讲讲自学 ...
- 大数据SQL中的Join谓词下推,真的那么难懂?
听到谓词下推这个词,是不是觉得很高大上,找点资料看了半天才能搞懂概念和思想,借这个机会好好学习一下吧. 引用范欣欣大佬的博客中写道,以前经常满大街听到谓词下推,然而对谓词下推却总感觉懵懵懂懂,并不明白 ...
随机推荐
- Android 实现图片加水印
加水印代码 public Bitmap addWaterMark(Bitmap src, String water, Context context){ Bitmap tarBitmap = src. ...
- Uva - Uva272 - TEX Quotes
TeX is a typesetting language developed by Donald Knuth. It takes source text together with a few ty ...
- C语言获取文件大小
C语言是一种比较底层的语言,有时在其他语言中很容易操作的事情,在C语言中就比较麻烦,例如获取一个文件的大小.Java中File类有个length函数,Python中os.path包中有个getsize ...
- Fedora 20: How to enable SSH
1. systemctl enable sshd.service 2. service sshd restart
- Fragment详解-android学习之旅(四十八)
Fragment的设计哲学 Fragment的继承体系 Fragment的开发 大部分都会继承如下的三个方法 Fragment与Activity的通信 Fragment与Activity交互信息 Fr ...
- Android support library支持包常用控件介绍(二)
谷歌官方推出Material Design 设计理念已经有段时间了,为支持更方便的实现 Material Design设计效果,官方给出了Android support design library ...
- Android学习之Animation(一)
3.0以前,android支持两种动画模式,Tween Animation,Frame Animation,在android3.0中又引入了一个新的动画系统:Property Animation,这三 ...
- (六十六)TableView内容超过一屏时滚动到屏幕底部的方法
假设数据放置在self.chatMessage数组内,只需要让tableView滚动到最后一条数据底部即可,调用scrollToRowAtIndexPath方法: [_tableView reload ...
- Cocos2D中图片加-hd后缀的说明
你可能注意到实际上游戏中的sprite都有2张图片,它都对应该精灵,并包含在资源包中(resource pack): player.png(27x40 pixels)和player-hd.png(do ...
- Dynamics CRM OData方式进行增删改查时报错的问题
今天在通过OData终结点update记录的时候报"Error processing request stream. The request should be a valid top-le ...