一:左右连接实例。

表TEST1: id
20
30
200
表TEST2: id
20
30
100
表TEST3: id
20
100
200

以下语句的查询结果
select t1.id as t1Id, t2.id as t2ID, t3.id as t3ID from [color=red]test1 t1 left join test2 t2 on t1.id = t2.id right join test3 t3 on t1.id = t3.id[/color]

结果: t1ID t2ID t3ID
20 20 20
200 null 200
null null 100

对于A left join B,则是A必有,B不必有。
对于A right join B,则是A不必有,B必有。

连续的连接时,A left join B right join C
则按照先后,先是A B的左连接,连接完之后再和C右连接。
A B的左连接,以A的记录为基准,
结果: t1ID t2ID
20 20
30 30
200 null

此结果再和C右连接,以C中全部记录为基准,
结果: t1ID t2ID t3ID
20 20 20
null null 100
200 null 200

二:无用的,多余的连接会影响效率
详见下例。
因为要确定的只是一个tin,那么就没必要用包含tin的主表再去 左外连接其余的表。
无论左外连接的表是否有符合条件的记录,主表的记录都是要包含进去的。

According to report, the following SQL is the slowest one.

SELECT DISTINCT cr01_trade_name, cg03_dereg_reason ......
from TR01_TAXPAYER_TIN t
where t.CR01_TIN_ID in
(SELECT a.CR01_TIN_ID
FROM TR12_ACCOUNTS_TIN a
left join TR02_OUTLET_TIN d on a.cr01_tin_id = d.cr01_tin_id and a.cr02_outlet_code = d.cr02_outlet_code
left join TR04_OUTLET_ADDRESS_TINS tr04 on a.cr01_tin_id = tr04.cr01_tin_id
left join TR37_ECONOMIC_CATEGORY_TIN tr37 on tr37.cr01_tin_id = a.cr01_tin_id
right join
(select e.CR01_TIN_ID, ......
from TR01_TAXPAYER_TIN e, TG09_TAXPAYER_TYPES c
where e.cg09_taxpayer_type=c.cg09_taxpayer_type) b on a.cr01_tin_id = b.cr01_tin_id
where 1=1 AND b.CS05_OFFICE_ID=111)
ORDER BY t.CR01_TIN_ID;

可以用下边的替换。即将在这里无用的左外连接去掉

SELECT DISTINCT t.cr01_trade_name,t.cg03_dereg_reason,....
from TR01_TAXPAYER_TIN t,TG09_TAXPAYER_TYPES c
where t.cg09_taxpayer_type=c.cg09_taxpayer_type and
t.CS05_OFFICE_ID=111 and
exists(select 1 from TR12_ACCOUNTS_TIN a where t.CR01_TIN_ID=a.CR01_TIN_ID)
order by t.CR01_TIN_ID;

The SQL Elapsed time [color=red]can reduce from 00:00:01.53 to 00:00:00.30[/color].

外连接 及 无用的外连接相关推荐

  1. MySQL 学习笔记(15)— 连接查询(内连接、左外连接、右外连接、全外连接、交叉连接、自然连接等)

    本文参考:https://gitbook.cn/gitchat/column/undefined/topic/5db92b68a9c3a53bc3800eff SQL 支持的连接查询包括内连接.外连接 ...

  2. java内连接外连接_SQL中的内连接与外连接--Java学习网

    核心提示:连接运算格式链接运算由两部分构成:连接类型和连接条件连接类型可分为:INNER JOIN 内连接LEFT OUTER JOIN 左外连接RIGHT OUTER JOIN 右外连接FULL O ...

  3. SQLAlchemy的使用---外键ForeignKey数据库创建与连接

    SQLAlchemy的使用---外键ForeignKey数据库创建与连接 # 一对多建表操作 from sqlalchemy.ext.declarative import declarative_ba ...

  4. mysql关联查询去重_MySQL外键和高级查询(连接查询、联合查询、子查询、去重查询)...

    MySQL的外键 什么是外键,很简单保持数据一致性的一个约束键.如果你有两张表,第一张是学生表,第二张表是一个成绩表,我们来看看保持数据一致性,其实在Django等框架的模型中中也能做关联获取对象. ...

  5. mysql语句的左外链接_MySQL中的JOIN连接

    一.新手 1+N  模式查询 题目:  查询价格大于 2000 元的商品及其栏目名称 1.  价格大于 2000 元的商品 select goods_id,goods_name,cat_id,shop ...

  6. mysql内连接的自连接_mysql 内连接、外连接、自连接

    一)内连接(等值连接):查询客户姓名,订单编号,订单价格 --------------------------------------------------- select c.name,o.isb ...

  7. Oracle 多表查询 --笛卡尔集--左连接--右连接--1999 语法--满外连接

    Oracle 多表查询总结 笛卡尔集现象: 笛卡尔集会在下面条件下产生: – 省略连接条件 – 连接条件无效 – 所有表中的所有行互相连接 为了避免笛卡尔集, 可以在where加入有效的连接条件. O ...

  8. 硬件设备使用网线连接PC并访问外网

    1.ssh连接设备 设备ip:192.168.2.11 使用网线连接设备网口和PC机网口,设置PC的ip地址为192.168.2.XX(和设备同网段). 借用XShell等连接工具,连接到设备. 2. ...

  9. 配置软路由-同时连接内网和外网

    配置软路由-同时连接内网和外网 Date Created: Mar 23, 2021 9:00 AM Status: 要学习的 windows 环境 首先使用cmd命令中route print检查 网 ...

最新文章

  1. window 10 桌面显示计算机的操作
  2. (转)oracle extent
  3. 优雅的创建一个JavaScript库
  4. access开发精要(10)-筛选
  5. java class类型参数_使用Class对象实例化Java类型参数/ generic
  6. 让数据中心变得更加友好
  7. java struts2下载文件_java struts2入门学习---文件下载的二种方式
  8. java 父类构造函数_Java基础系列 - 子类继承父类,调用父类的构造函数
  9. MYSQL5.5.48编译安装
  10. 关于boostrap的modal隐藏问题(前端框架)
  11. Java:接口文档示例
  12. 磁珠法RNA pull down试剂盒、蛋白质-核酸相互作用
  13. vue的微信语音功能,录音+对接口返回amr音频播放
  14. java 佛祖保佑_【Java】SpringBoot 佛祖保佑banner.txt
  15. Linux 之旅 8:初识 BASH
  16. XUPT新生赛题目回顾(2)
  17. .net 批量更新_痛点:Anaconda3 python第三方库批量安装
  18. spring 的@PersistenceUnit和@PersistenceContext
  19. 深度学习_目标检测_SPP(Spatial Pyramid Pooling)详解
  20. 2020年4月西安葡萄城挂经

热门文章

  1. 重新网格化Remesh
  2. 使用Python将多个单独的Excel文件整合到一个Excel文件的不同工作表里
  3. SonTek -Argonaut-SL500流量计适配调试说明
  4. 幻塔服务器已关闭怎么办
  5. 中国省市区--地区SQL表
  6. 机器学习-47-ML-03-Metric-based Approach Train+Test as RNN(元学习-support set和query set用于同一网络的方法)
  7. 故障:不能连接到共享打印机
  8. linux驱动 设备驱动模型
  9. 产品经理进修第四天 产品增长怎么做
  10. 一文看懂网络安全五年之巨变