SQL优化--使用关联查询代替子查询

测试例子:

子查询:

select a.*,
(select workflowname from workflowbase where id=workflowid) workflowname
from  [[zping.com]]] a
where a.operator='402882ed1112669201112a8385892f33'

执行结果:

(360 行受影响)
表 'Worktable'。扫描计数 360,逻辑读取 142334 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'workflowbase'。扫描计数 1,逻辑读取 1589 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 '[zping.com]'。扫描计数 1,逻辑读取 366 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

关联查询:

select a.*,b.workflowname
from  [[zping.com]]] a inner join  workflowbase b on a.workflowid=b.id
where operator='402882ed1112669201112a8385892f33'

执行结果:

(360 行受影响)
表 'Worktable'。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'workflowbase'。扫描计数 1,逻辑读取 1589 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 '[zping.com]'。扫描计数 1,逻辑读取 366 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

这里:子查询IO次数:142334 +1589+366=144289

关联查询IO次数:1589 +366 =1922

关联查询是子查询的75倍

总结:

使用子查询和关联查询,一般情况下如果能用关联查询就不用子查询,

转载于:https://www.cnblogs.com/zping/archive/2008/08/05/1260978.html

SQL优化--使用关联查询代替子查询相关推荐

  1. SQL优化(三):子查询和IN,EXISTS用法和优化方法

    用法 1. 与IN结合使用 子查询与IN结合使用时,通常通过子查询查询出某个表单列的值,然后作为外层的SELECT的IN查询的数据源,如下,查询今天进行了购物的用户列表,首先通过子查询在订单表t_or ...

  2. oracle sql 转换成 hive sql -子查询转关联查询(三).子查询中嵌套子查询

    其他sql格式也在更新中,可直接查看俺的这个系列,要是没有你需要的格式,可在评论或私信我,俺现在一天一看 Oracle转换hive 其他sql格式也在更新中,可直接查看俺的这个系列,要是没有你需要的格 ...

  3. mysql 子表 关联查询语句_MySQL基本SQL语句之单表查询、多表查询和子查询

    一.简单查询: 基本语法:SELECT * FROM tb_name;查询全部 SELECT field1,field2 FROM tb_name; 投影 SELECT [DISTINCT] * FR ...

  4. 金仓数据库 KingbaseES SQL 语言参考手册 (10. 查询和子查询)

    10. 查询和子查询 本章描述SQL查询以及子查询.包含以下章节: 关于查询和子查询 创建简单查询 层次查询 集合操作 查询结果排序 JOIN操作 使用子查询 限制嵌套查询层数 DUAL表查询 10. ...

  5. 查询优化:SQL优化,关于连多表查询

    查询优化:SQL优化 场景:当列表展示的数据来自很多表中的数据时,由于需要实现相关的查询条件,WHERE涉及到每张表时,需要用JOIN连接查询出相关数据(比如查询采购单数据:有采购单.采购单明细.入库 ...

  6. oracle多表关联查询报表,oracle多表关联查询和子查询

    oracle多表关联查询和子查询 一.多表关联查询 例子: sql> create table student1 ( sid varchar(3), sname varchar(6), sage ...

  7. sql语句增删改查与子查询

    修改表 修改表 语法: Alter table <旧表名> rename [ TO] <新表名>; 例子:Alter table `demo01` rename `demo02 ...

  8. MySQL—关联查询与子查询(从小白到大牛)

    前言  在大部分的数据库查询中,我们往往都不是进行简单的单表查询,而是多表查询.所以我们也必须学习SQL查询中的高级部分,如内连接.外连接和子查询,通过这些查询技术我们将能够解决项目中复杂的查询问题. ...

  9. oracle左表关联与又表关联,oracle多表关联查询和子查询

    oracle多表关联查询和子查询 一.多表关联查询 例子: SQL> create tablestudent1 ( sidvarchar(3), snamevarchar(6), sagenum ...

最新文章

  1. 线程了解以及创建线程的Threading模块中的部分方法
  2. TF2.0—tf.keras.layers.Activation
  3. 二十三种设计模式[4] - 原型模式(Prototype Pattern)
  4. JavaBean的实用工具Lombok(省去get、set等方法)
  5. Apache CXF 框架结构和基本原理
  6. 《近匠》专访WRTnode创始人罗未——开源硬件如何拥抱物联网
  7. Mybatis-plus 之sql注入器
  8. 顶尖量化私募“分家产”!学霸基金经理离职,代码产权归属成看点
  9. Unity3D游戏开发案例学习——Tanks!(基本完结)
  10. 必看:C语言高效学习方法(附经典试题详解)
  11. Golang的Panic和Recover
  12. go语言的iota是什么意思_golang 使用 iota
  13. 计算机二级各个科目的区别,计算机二级考试的各个科目的内容及区别
  14. linux怎么卸载mailx,Linux下mail/mailx命令发送邮件
  15. 有关关键路径的概念和算法
  16. hapi入门简介(入门实践)----净土小沙弥学hapi.js_第二篇
  17. Chino with Equation (隔板法+除法取模)
  18. java socket一直得不到返回值
  19. 信息学奥赛之初赛 第1轮 讲解(01-08课)
  20. CAS latex模板中参考文献使用APA引用格式的解决方案

热门文章

  1. linux crontab mysqlpump自动备份mysql 免输密码 --login-path
  2. Win10系列:JavaScript动画3
  3. 读取properties文件方式
  4. 为 iOS 6 量身打造 Apps
  5. 深入理解JavaScript内部原理(5): function
  6. PHP中输出本地时间
  7. xm list源码分析
  8. 任务二十九:表单(一)单个表单项的检验
  9. SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第二篇)
  10. 新手学.net(习惯问题)