首页 > 其他分享 >外连接消除技术应用

外连接消除技术应用

时间:2023-06-15 14:05:25浏览次数:40  
标签:join m1 inner 应用 c1 where 连接 消除 left


上回介绍了外连接消除技术。今天更进一步来聊聊这个话题。

select * from a 
   right join b on a.m1 = b.m1 
   left join c on c.c1 = b.c1
where c.c1 in (1,2,3);

基于外连接消除技术,这个语句 left join 可以改写成 inner join

select * from a 
   right join b on a.m1 = b.m1 
   inner join c on c.c1 = b.c1
where c.c1 in (1,2,3);

原因是,left join 的结果中可能会有 c 的 NULL 行,但是最后通过 where 条件,这些 NULL 行肯定会被 where 过滤,所以等价于 inner join 行为。

进一步地,考虑到 where 条件过滤性可能非常好,会让 c 的结果集非常小。那么,可以让 b 先和 c 做 inner join,然后再去和 a 做 right join。改写如下:

select * from b
   inner join c on c.c1 = b.c1
   left join a on a.m1 = b.m1
where c.c1 in (1,2,3);

改写成这样后,b 先和 c join,可以得到一个很小的结果集,然后再用 Nested Loop Join 去和 a 做 join,性能会优得多。

-END

外连接消除技术应用_外连接


标签:join,m1,inner,应用,c1,where,连接,消除,left
From: https://blog.51cto.com/u_16162111/6486722

相关文章

  • 【SQL 优化器技术系列】 外连接消除
    Oracle2005年出了一个30多页的小册子,《QueryOptimizationinOracleDatabase10gRelease2》,介绍了常见的优化器技术。我是做SQL执行的,优化部分只了解皮毛,从没有系统学习过。本系列逐个学习和介绍,自我提升,也帮助他人。外连接消除就是将一个outerjoin转换成innerjoin。......
  • 从 SpringApplication 认识 Spring 应用启动过程
    一、SpringApplication是什么?Spring应用的启动类。二、SpringApplication执行了什么?创建ApplicationContext实例ApplicationContext就是我们所说的容器实例。注册CommandLinePropertySourceCommandLinePropertySource的作用是将命令行参数输出为Spring属性。......
  • 数据库连接池-Druid的使用
       packagedruid;/**druid数据连接池**/importcom.alibaba.druid.pool.DruidDataSourceFactory;importjavax.sql.DataSource;importjava.io.FileInputStream;importjava.io.FileReader;importjava.sql.Connection;importjava.util.Properties;p......
  • 解析Spring内置作用域及其在实践中的应用
    摘要:本文详细解析了Spring的内置作用域,包括Singleton、Prototype、Request、Session、Application和WebSocket作用域,并通过实例讲解了它们在实际开发中的应用。本文分享自华为云社区《Spring高手之路4——深度解析Spring内置作用域及其在实践中的应用》,作者:砖业洋__。本文详细解析......
  • 深度学习应用篇-元学习[15]:基于度量的元学习:SNAIL、RN、PN、MN
    深度学习应用篇-元学习[15]:基于度量的元学习:SNAIL、RN、PN、MN1.SimpleNeuralAttentiveLearner(SNAIL)元学习可以被定义为一种序列到序列的问题,在现存的方法中,元学习器的瓶颈是如何去吸收同化利用过去的经验。注意力机制可以允许在历史中精准摘取某段具体的信息。SimpleN......
  • 商用密码应用安全性评估
    了解密评,参考:https://www.zxcsec.com/Assessment.html什么是商用密码应用安全性评估?商用密码应用安全性评估(简称“密评”)是指对采用商用密码技术、产品和服务集成建设的网络和信息系统密码应用的合规性、正确性、有效性进行评估。国家法律法规依照《中华人民共和国密码法》......
  • Mysql查看连接数(连接总数、活跃数、最大并发数)
    查看最大连接数mysql>showvariableslike'%max_connection%';+-----------------------+-------+|Variable_name|Value|+-----------------------+-------+|extra_max_connections|||max_connections|2512|+----------------......
  • 北斗GPS卫星授时服务器(NTP授时)应用于地铁自控系统
    北斗GPS卫星授时服务器(NTP授时)应用于地铁自控系统北斗GPS卫星授时服务器(NTP授时)应用于地铁自控系统京准电子科技官微——ahjzsz1.1时钟系统概况    地铁时钟系统是轨道交通系统的重要组成部份之一,其主要作用是为控制中心调度员、车站值班员、各部门工作人员及乘客提供统一......
  • 软件应用与开发-Web应用与开发《高并发在线试题练习对战系统》
    本作品是一个针对大学生对于计算机二级、java、c、python基础知识的自学,为后续的学习增强基础,于是设计了一个在线做题+对战的平台,实现了1对1的在线对战功能,界面简洁大方,可以在多种客户端使用如手机、电脑等。面向的用户是计算机专业和需要考级的大学生。主要功能是进行选择题的训......
  • 在 Istio 服务网格内连接外部 MySQL 数据库
    为了方便理解,以Istio官方提供的Bookinfo应用示例为例,利用ratings服务外部MySQL数据库。Bookinfo应用的架构图如下:其中,包含四个单独的微服务:productpage:调用details和reviews两个服务,用来生成页面。details:包含了书籍的信息。reviews:包含了书籍相关的评论。它还......