分享一篇:sql语句中使用子查询,可能会引起查询的性能问题,查询时间会变长
前段时间,做自动化适配的时候,查找需要的数据的时候,使用到了dblink,跨数据库实例进行访问,整段sql拼接再加上dblink,在plsql查询的时候,性能还不是很长时间,最多2分钟可以查到,前期调试阶段,在plsql里面调,没有留意到这个性能问题,后期,投入自动化使用的时候,就出现问题了,一个脚本,查找需要数据的方法,耗时长达10分钟。
原始版本设计:
查找需要数据的原有sql进行拼接筛选
如:
select * from student t ,class b where t.studentNo=b.studentNo ....中间省略其他很多过滤的sql
and t.studentNo not in (select c.studentNo from scort c where c.sort>'90') --中间使用的子查询
分析耗时长的原因:
1.使用plsql查询,速度还是可以接受的(使用到索引),使用自动化框架,怎么就变慢了 -- 原因是jdbc框架,没有使用索引来查找
2.优化:先创建一个临时表,然后再创建关联
优化之后的sql
WITH sort_a AS (select c.studentNo from scort c where c.sort>'90')
select * from student t ,class b,sort_a d where t.studentNo=b.studentNo and t.studentNo=d.studentNo
备注:可能做开发的同事,比较清楚,一般查询里面,都不建议在sql语句里面加很多的子查询,一般会建立临时表等的去过滤
with xx as的作用:https://www.cnblogs.com/mingforyou/p/8295239.html
分享一篇:sql语句中使用子查询,可能会引起查询的性能问题,查询时间会变长的更多相关文章
- SQL Server中多表连接时驱动顺序对性能的影响
本文出处:http://www.cnblogs.com/wy123/p/7106861.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错 ...
- 在 SQL Server 数据库的 WHERE 语句中使用子查询
这是关于子查询语句的一系列文章中的第三篇.在这篇文章中我们将讨论WHERE语句中的子查询语句.其他的文章讨论了其他语句中的子查询语句. 本次课程中的所有例子都是基于Microsoft SQL Serv ...
- SQL语句中带有EXISTS谓词的子查询的理解与使用
EXISTS:代表存在量词. 在SQL中,把具有全称量词的谓词查询问题转换成等价的存在量词的谓词查询予以实现. 如有三个表,Student(Sno,Sname),Course(Cno,Cname),S ...
- SQL语句中的select高级用法
#转载请联系 为了更好的了解下面的知识点,我们先创建两张表并插入数据. # 学生表 +----+-----------+------+--------+--------+--------+------ ...
- SQL点滴35—SQL语句中的exists
原文:SQL点滴35-SQL语句中的exists 比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers c WHE ...
- SQL语句中 INNER JOIN的用法!
一.SQL语句中 INNER JOIN的用法? 1.INNER JOIN的作用? 可以在两个或者更多的表中获取结果,得出一张新表. [隐式内连接] 表一 car 购物车 表二 user 用户 发现 ...
- 清晰讲解SQL语句中的外连接,通用于Mysql和Oracle,全是干货哦
直入主题: 我们做一个操作,将员工SCOTT的部门去掉,再次通过内连接查看数据,看看会产生什么现象? 使用内连接,查询数据 问题:找不到SCOTT员工了,只有13条数据,这显然不合理:这就是内连接的缺 ...
- Lambda表达式Contains方法(等价于SQL语句中的like)使用注意事项
貌似已经半年多没写一篇帖子了,充分的说明要么老总一天折腾的让人心齐疲惫,没心情去写:要么另外一种可能就是自己不思进取,说白了就是懒.好在这种状态在今天被打破了.MoNey加油. 众所周知,想在Enti ...
- MySQL-第二篇SQL语句基础(1)语句分类及DDL语句
1.什么是SQL语句 SQL是Structed Query Language的缩写,即结构化查询语言.SQL是操作和检索数据库的标准语言,标准的SQL语句可以操作任何关系数据库. 2.标准的SQL语句 ...
随机推荐
- 如何在linux 上配置NTP 时间同步?
故障现象: 有些应用场景,对时间同步的要求严格,需要用到NTP同步,如何在linux上配置NTP时间同步? 解决方案: 在linux 上配置NTP 时间同步,具休操作步骤,整理如下: 1.安装软件包( ...
- Classs类
Classs类如何获得 获得Class对象 方式一: 通过Object类中的getClass()方法 方式二: 通过 类名.class 获取到字节码文件对象( 方式三: 通过Class类中的方法(将类 ...
- 【Spring Framework】Spring注解设置Bean的初始化、销毁方法的方式
bean的生命周期:创建---初始化---销毁. Spring中声明的Bean的初始化和销毁方法有3种方式: @Bean的注解的initMethod.DestroyMethod属性 bean实现Ini ...
- FastJson简介
FastJson简介 首先,介绍一下fastjson.fastjson是由alibaba开源的一套json处理器.与其他json处理器(如Gson,Jackson等)和其他的Java对象序列化反序列化 ...
- UE4网络模块解析(一)
一. UE4网络架构 Server-Client构架 1.一个服务器,一个或多个客户端. 客户端所有的操作如击杀等都需要传到中央服务器来运算,得到的运算结果下发到各个客户端.服务器是UE4多人游戏的重 ...
- HCL华三模拟器静态路由实验
(copy自我的其他博客网站) 拓扑如下: 实验目的:通过给A.B.C三台路由器配置静态路由,使PC1可以ping通PC2. 实验环境:Windows10 (21H1),HCL(V3.0.1) 实验步 ...
- python函数概念
函数介绍 函数就类似与一个工具,作用就是在有需求时可以直接使用. 函数作用 1.精简代码,不需要重复写代码. 2.提高代码兼容性 3.提供返回值 函数语法结构 def 函数名(参数1, 参数2): & ...
- Clusternet 成为首批通过工信部开源成熟度评估项目!!!
Clusternet 作为首批项目参与了<信息技术 开源 开源项目评估模型参考架构>测评,并成为通过评估的四个项目之一.<信息技术 开源 开源项目评估模型参考架构>由国防科技大 ...
- vue 判断页面是否滚动到底部
需求 要求用户阅读完本页所有内容后,下一步按钮才可以点击. 实现思路 通过判断当前页面是否到达底部来设置按钮的点击事件. 要判断当前页面是否到达底部需要用到三个距离--距离顶部的距离scrollTop ...
- MAVEN项目打包报错:Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) -> [Help 1]
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on pr ...