SQL Server的三种物理连接之Merge join(二)
简介
merge join 对两个表在连接列上按照相同的规则排序,然后再做merge,匹配的输出。
下面这个动态图展示了merge join的详细过程。
merge join示例
创建两个表
IF OBJECT_ID('dbo.Tbl10') IS NOT NULL DROP TABLE dbo.Tbl10;
CREATE TABLE dbo.Tbl10(
Id INT IDENTITY(1,1),
Val INT,
Fill CHAR(7000) NOT NULL DEFAULT REPLICATE('Fill',1750)
); IF OBJECT_ID('dbo.Tbl100') IS NOT NULL DROP TABLE dbo.Tbl100;
CREATE TABLE dbo.Tbl100(
Id INT IDENTITY(1,1),
Val INT,
Fill CHAR(7000) NOT NULL DEFAULT REPLICATE('Fill',1750)
); INSERT INTO dbo.Tbl10(Val)
SELECT TOP(10) 1+ROW_NUMBER()OVER(ORDER BY (SELECT 1))%100
FROM sys.all_columns A, sys.all_columns B, sys.all_columns C; INSERT INTO dbo.Tbl100(Val)
SELECT TOP(100) ROW_NUMBER()OVER(ORDER BY (SELECT 1))
FROM sys.all_columns A, sys.all_columns B, sys.all_columns C; SELECT index_type_desc, alloc_unit_type_desc, index_depth, page_count, record_count
FROM sys.dm_db_index_physical_stats(DB_ID(),OBJECT_ID('dbo.Tbl10'),NULL,NULL,'SAMPLED'); SELECT index_type_desc, alloc_unit_type_desc, index_depth, page_count, record_count
FROM sys.dm_db_index_physical_stats(DB_ID(),OBJECT_ID('dbo.Tbl100'),NULL,NULL,'SAMPLED');
执行下面的查询:
SET STATISTICS IO ON;
GO
SELECT *
FROM dbo.Tbl100 A
INNER MERGE JOIN dbo.Tbl10 B
ON A.Val = B.Val;
GO
SET STATISTICS IO OFF;
执行计划显示对每个输入都做了排序。
aaarticlea/png;base64,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" alt="" />
在执行计划的提示上可以看到表被扫描了一次。可以通过SET STATISTICS IO ON,查看:
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Tbl10'. Scan count 1, logical reads 10, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Tbl100'. Scan count 1, logical reads 100, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
两个表的read count说明了每个表都只扫描了一次,我们会发现多出了一个Worktable。
在Sql Server不知道表中join列是唯一的情况下,会准备一个多对多的可能性,因为合并算法的设计是对每一个表中的每一个记录只访问一次,它不能处理多对多的关系。Worktable是在tempdb中的,如果表与表之间的关系是多对多时就会用到Worktable。
merge join操作符有一个多对多的属性,你可以在执行计划工具提示窗口看到。如果此属性设置为“true”,这意味着SQL服务器预计输入有重复的行。
merge join的应用场景:
如果对在表上有索引的或者查询有排序需求的,使用merge join是最好的选择。
merge join的排序十分消耗性能。merge join适合中等数据量的查询,如果是大数据量并且未经过排序的话hash join比较合适。
需要注意的是即使查询的数据只有潜在的多对多的关系时也会导致Worktable的创建和填充,如果有任何重复的值,在Worktable的数据频繁的重读对查询性能也是不利的。
SQL Server的三种物理连接之Merge join(二)的更多相关文章
- SQL Server的三种物理连接之Loop Join(一)
Sql Server有三种物理连接Loop Join,Merge Join,Hash Join, 当表之间连接的时候会选择其中之一,不同的连接产生的性能不同,理解这三种物理连接对性能调优有很大帮助. ...
- SQL Server的三种物理连接之Hash Join(三)
简介 在 SQL Server 2012 在一些特殊的例子下会看到下面的图标: Hash Join分为两个阶段,分别为生成和探测阶段. 首先是生成阶段,将输入源中的每一个条目经过散列函数的计算都放到不 ...
- 浅谈SQL Server中的三种物理连接操作(HASH JOIN MERGE JOIN NESTED LOOP)
简介 在SQL Server中,我们所常见的表与表之间的Inner Join,Outer Join都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为Loop Join,Merge J ...
- Sql Server中三种字符串合并方法的性能比较
文章来自:博客园-DotNet菜园 最近正在处理一个合并字符吕的存储过程,在一个测试系统的开发中,要使用到字符串合并功能,直接在Sql中做.示例:有表內容﹕名称 內容1 abc1 ...
- SQL SERVER数据库 三种 恢复模式
SQL SERVER 2005 以后三种恢复模式: 简单(Sample),完全(Full),大批量(Bulk_Logged) 完全备份模型 完全备份模式是指在出现数据文件毁坏时丢失数据的风险最小.如果 ...
- 启动和停止SQL Server服务三种形式
1.后台启动和停止服务 计算机>右键>管理>服务和应用>服务>sqlserver(MSSSQLSERVER) 2.配置管理器启动和停止服务 开始>所有程序>M ...
- SQL Server的三种分页方式
直接上代码 --top not in方式 select top 条数 * from tablename where Id not in (select top 条数*页数 Id from tablen ...
- SQL Server 的三种用户自定义函数
create function fun_A() #标题函数.create function fun_name() returns output_type as begin return value ...
- SQL SERVER数据库三种数据插入方式
数据插入:INSERT INTO A(CBM,CMC) VALUES('1','测试')--单条数据插入INSERT INTO A(CBM,CMC)SELECT '1','测试'--单条数据插入INS ...
随机推荐
- Cocos2d-x——CocosBuilder官方帮助文档翻译2 多分辨率支持
Working with Multiple Resolutions 多分辨率设置 A common scenario when creating apps or games is to target ...
- Linux在向磁盘新建文件的时候在系统层面的四步操作
----------- 1.存储文件属性.内核先找到一个空的i节点,并把文件属性信息记录其中. 2.存储数据.先计算要多少个磁盘块,在内核自由块列表找到合适数量的磁盘块,并把数据从内核的缓冲区依次 ...
- UVa 11111 Generalized Matrioshkas
嵌套玩具, 要求外层玩具的尺寸比内层玩具尺寸的和要大. 每一个玩具由一个负数与相应的正数表示, 在这两数之间的部分即为此玩具内部的玩具. 要求判断一串输出的数字是否能组成一个合法的玩具. 一个合法的玩 ...
- Android,iOS,浏览器打开手机QQ与指定用户聊天界面
在浏览器中可以通过JS代码打开QQ并弹出聊天界面,一般作为客服QQ使用.而在移动端腾讯貌似没有公布提供类似API,但是却可以使用schema模式来启动手机QQ. 以下为具体代码: 浏览器(包括手机浏览 ...
- stm32的DFU使用方法
stm32的dfu看上去是个很高级的东西,似乎可以通过USB给内部flash.外部spi flash.外部nor等东西刷写数据.把数据读出来,但是用了一下感觉确实有点麻烦. 先不管原理是怎样的,使用方 ...
- char指针
1.在C语言中,没有字符串类型,因此使用char指针表示字符串. 2.那么问题来了,使用char* 表示字符串,到哪里是结尾呢?因此需要一个特殊的字符作为哨兵,类似迭代器中的end(),这个哨兵就是' ...
- C#中使用UDP通信
UDP通信是无连接通信,客户端在发送数据前无需与服务器端建立连接,即使服务器端不在线也可以发送,但是不能保证服务器端可以收到数据. 服务器端代码: static void Main(string[] ...
- 【转】Dancing Links精确覆盖问题
原文链接:http://sqybi.com/works/dlxcn/ (只转载过来一部分,全文请看原文,感觉讲得很好~)正文 精确覆盖问题 解决精确覆盖问题 舞蹈步骤 效率分析 ...
- S5PV210开发系列四_uCGUI的移植
S5PV210开发系列四 uCGUI的移植 象棋小子 1048272975 GUI(图形用户界面)极大地方便了非专业用户的使用,用户无需记忆大量的命令,取而代之的是能够通过窗体.菜单 ...
- java中的正则操作总结
http://www.cnblogs.com/nerxious/archive/2013/01/03/2842910.html 正则表达式在处理字符串的效率上是相当高的 关于正则表达式的使用,更多的是 ...