博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL连接的基本划分
阅读量:4202 次
发布时间:2019-05-26

本文共 785 字,大约阅读时间需要 2 分钟。

多表连接从连接解释来说一般可以分为:NEXT LOOP、SORT MERGE、HASH JOIN。

NEST LOOP:

驱动表Driving Table,被驱动表Driven Table。驱动表做一次遍历,被驱动表做多次遍历。不需要排序。可以使用非等值连接。

SORT MERGE:

每个表都要先排序,然后进行合并。排序首先在内存中进行,能在内存中完成的叫做Optimal Sort(In-Memory Sort)。如果需要借助磁盘缓冲,叫做外部排序External Sort。

HASH JOIN:

一个驱动表,一个被驱动表。准备阶段:对驱动表的连接字段进行哈希操作,产生一系列的Hash Bucket(哈希桶);探测阶段:依次上去被驱动表每条记录,对连接字段执行相同哈希函数,和驱动表哈希桶进行匹配,这个过程叫探测(Probe)。

 

 

从语句连接方式来说一般可以分为:传统连接(Inner Join、Left/Right Outer Join、Full Join、Cross Join),半连接(包括Left/Right Semi Join、Left/Right Anti Semi Join;In、Exists是Semi-Join,Not Exists、Not In是Anti-Join),非等值连接(Theta Join)。例子:

--left-semi-join

select L1 fromL where (L.1 ,L.2) in (select R.3,R.5 from R )

select L1 fromL where exists select 1 from R where L.1=R.3 and L.2=R.5)

--left-anti-semi-join

where(left.col1, left.col2) not in (R#3,R#5)

转载地址:http://swili.baihongyu.com/

你可能感兴趣的文章
构建OpenStack的云基础架构:ManageIQ(转)
查看>>
云管理软件 ManageIQ(转)
查看>>
CentOS 7.0,启用iptables防火墙(转)
查看>>
DISCUZ浅析之COOKIE篇
查看>>
实战DDD(Domain-Driven Design领域驱动设计:Evans DDD)
查看>>
SSH中各个框架的作用以及Spring AOP,IOC,DI详解
查看>>
openstack juno 配置vmware(vcenter、vsphere)
查看>>
远程debug调试(eclipse)之openstack windows
查看>>
PAAS平台对比:OpenShift VS CloudFoundry【51CTO调研报告】
查看>>
JAX-RS(java restful实现讲解)(转)
查看>>
Spring MVC与JAX-RS比较与分析
查看>>
openstack官方docker介绍
查看>>
头痛与早餐
查看>>
[转]在ASP.NET 2.0中操作数据::创建一个数据访问层
查看>>
Linux命令之chmod详解
查看>>
【java小程序实战】小程序注销功能实现
查看>>
Java中子类能否继承父类的私有属性和方法
查看>>
JVM内存模型详解
查看>>
(六) Git--标签管理
查看>>
建造者模式(Builder)-设计模式(三)
查看>>