SQL Server的三种物理连接之Hash Join(三)

时间:2022-09-01 16:27:51

简介

SQL Server的三种物理连接之Hash Join(三)

在 SQL Server 2012 在一些特殊的例子下会看到下面的图标:

SQL Server的三种物理连接之Hash Join(三)

Hash Join分为两个阶段,分别为生成和探测阶段。

首先是生成阶段,将输入源中的每一个条目经过散列函数的计算都放到不同的Hash Bucket中,其中Hash Function的选择和Hash Bucket的数量都是黑盒,通常来讲,查询优化器都会使用连接两端中比较小的哪个输入集来作为第一阶段的输入源。

接下来是探测阶段,对于另一个输入集合,同样针对每一行进行散列函数,确定其所应在的Hash Bucket,在针对这行和对应Hash Bucket中的每一行进行匹配,如果匹配则返回对应的行。

通过了解哈希匹配的原理不难看出,哈希匹配涉及到散列函数,所以对CPU的消耗会非常高,此外,在Hash Bucket中的行是无序的,所以输出结果也是无序的。

示例演示:

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');

使用hash join执行下面查询

SET STATISTICS IO ON;
GO
SELECT *
FROM dbo.Tbl100 A
INNER HASH JOIN dbo.Tbl10 B
ON A.Val = B.Val;
GO
SET STATISTICS IO OFF;

aaarticlea/png;base64,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yH3V8cDbJcXmpWjs2Lp1q3R5Q0PDzMxMaU41BJVNFy5ceNOb3rR48eLBwcE3velNDz300Ozs7Jvf/OaHHnpoYmIi7+rR0Q4YhpN1VWNHLpeLLlBQUx5iR8cDb9c0TfOxY+uNHjUE/CAuCeV/t/VGbwNB4QSlwo7BwcE1a9bccccd0m8JdjiEv2IAACAASURBVAwODsFwLbmv78J11123YsWKgYGB6667bsmSJTMzs+985zuXLFkyPj6Rd3VgBwyn6arGjltvvbWxsZHOX8+poKacjXZ0PPB2DzsobPAWiksocdghFkhCUuw4duzY0qVL77jjjkWLFklPR0NDw/T0dH//AAzXks+f73v3u9+9fv36gYGBd7/73atXr56ZmfnoRz+6evXqsbHxvKtz2NHUpMEwnKxrCTtuu+22pqamkydPSgsU1JTHwA7vs7iEWzPsZJlnqOOBR5f/v9f9XeAHHl1OlkuxY/ny5YQ51q5dKz0dDQ0N4+MTZ844MFxLPnv27Gc+85mtW7deuND/mc98ZuPGjVNTU1/60pc2btx46dKlvKsj2gHDabqqseO2224j7ez27dulBQpq4pPCDnEjEQNB8uvO+x4hzHHnfY8EC6XYcfz48XXr1q1du9a2benpaGhouHjx0tGjx2C4lnz6dOfNN9+8a9eu3t7em2+++eWXXx4fH//ud7/78ssv9/cP5F0d2AHDabqqsYMwh23b586dkxYoqH1PqJNF3ATV7VJc5OPO+x6hmcNVj+0YGBg4ePDggQMHpN82NDQMD188dPgIDNeST58+vWjRopaWlnPnehctWrRv376xsfEHHnhg3759Fy70510d2AHDabqqsWPRokUvvPBCqcd2FDikNFBQaN7YISriTZahoaH29nbpVw0NDUNDwwcOHIThWvKpU6cffvjhgwcPnjvX+/DDD7e0tIyOjjY2Nra0tJw/35d39TJjB3lTN83U9qns0X8ruJQJZdI/dXASrmrs2Llz59DQUESBgppy4U2WsF+koBdog20EYRC/cHJjS4uet2NgcHDf/hYYriUfP9HWc66351yv43T7H86SD+3tp/KuHokd/kQa+do2x5+ltOC7sLLtVOWtnffsYaVvrR0r499B5cl4qUmmoqYkyXNWgR2V6OAnVv5wVY0deVVQU14X04X19w/seXUfDMOBo7BDmDxU5eKBIB92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" alt="" />

查看统计信息:

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.

优缺点:

•所有逻辑连接类型都可以处理。

•它确实需要一个相当大的内存量,足够大,以适应整个左侧输入。(可能会在tempdb中)

•在创建哈希索引的整个过程中,没有一行将返回。

在连接条件中至少有一列需要使用一个相等的比较。

因为昂贵的建立阶段,这是最资源密集的连接算法。然而,一旦哈希表是建立的,这个连接算法可以很快。对于没有可用的索引的大表,在探测阶段的时间节省将超过建设阶段的额外费用。然而,记住,因为大量的内存需求,只有极少数的这些可以运行在同一时间。

SQL Server的三种物理连接之Hash Join(三)的更多相关文章

  1. 浅谈SQL Server中的三种物理连接操作(HASH JOIN MERGE JOIN NESTED LOOP)

    简介 在SQL Server中,我们所常见的表与表之间的Inner Join,Outer Join都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为Loop Join,Merge J ...

  2. SQL Server的三种物理连接之Loop Join(一)

    Sql Server有三种物理连接Loop Join,Merge Join,Hash Join, 当表之间连接的时候会选择其中之一,不同的连接产生的性能不同,理解这三种物理连接对性能调优有很大帮助. ...

  3. SQL Server的三种物理连接之Merge join(二)

    简介 merge join 对两个表在连接列上按照相同的规则排序,然后再做merge,匹配的输出. 下面这个动态图展示了merge join的详细过程. merge join示例 创建两个表 IF O ...

  4. 浅谈SQL Server中的三种物理连接操作(Nested Loop Join、Merge Join、Hash Join)

    简介 在SQL Server中,我们所常见的表与表之间的Inner Join,Outer Join都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为Loop Join,Merge J ...

  5. 浅谈SQL Server中的三种物理连接操作

    简介 在SQL Server中,我们所常见的表与表之间的Inner Join,Outer Join都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为Loop Join,Merge J ...

  6. SQL Server中的三种物理连接操作

    来源:https://msdn.microsoft.com/zh-cn/library/dn144699.aspx 简介 在SQL Server中,我们所常见的表与表之间的Inner Join,Out ...

  7. SQL Server 的 3 种连接

    第一种 1. nested loop: select * from tableA inner join tableB on tableA.X = tableB.X; 它的执行过程是这样的.对于tabl ...

  8. SQL Server调优系列基础篇(常用运算符总结——三种物理连接方式剖析)

    前言 上一篇我们介绍了如何查看查询计划,本篇将介绍在我们查看的查询计划时的分析技巧,以及几种我们常用的运算符优化技巧,同样侧重基础知识的掌握. 通过本篇可以了解我们平常所写的T-SQL语句,在SQL ...

  9. SQL Server 内存中OLTP内部机制概述(三)

    ----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory ...

随机推荐

  1. php基础面试题1

    问题1:谈谈你对的PHP的基本认识. 回答:PHP是Hypertext Preprocessor(超文本预处理器)的简称,是一种用来开发动态网站的服务器端脚本语言. 问题2:什么是MVC? 回答:MV ...

  2. CodeForces 219D 树形DP

    D. Choosing Capital for Treeland time limit per test 3 seconds memory limit per test 256 megabytes i ...

  3. UESTC 880 生日礼物 --单调队列优化DP

    定义dp[i][j]表示第i天手中有j股股票时,获得的最多钱数. 转移方程有: 1.当天不买也不卖: dp[i][j]=dp[i-1][j]; 2.当天买了j-k股: dp[i][j]=max(dp[ ...

  4. SQL Server中的uniqueidentifier类型

    uniqueidentifier类型可以配合T-SQL中的newid和newsequentialid来生成唯一标识符,具体区别如下(摘抄自微软官方文档). Nonsequential GUIDs: Y ...

  5. Scss sass

    http://www.ruanyifeng.com/blog/2012/06/sass.htmlscss 声明:1,$blue : #1875e7;2,.class1 { border: 1px so ...

  6. javascript中的原型和闭包

    定义 //闭包测试 function bbTest() { var local = "这里是本地变量"; //闭包会扩大局部变量的作用域,具备变量一致会存活到函数之外,在函数之外可 ...

  7. (转载)SQL中导入图片

    SQL中导入图片 分类: 论坛精贴 2006-05-10 12:07 398人阅读 评论(0) 收藏 举报 sqlimage服务器insertlogingo 1.建立过程CREATE PROCEDUR ...

  8. javascript 字符串滚动显示

    <html> <head> <script type="text/javascript"> var chars = "JavaScri ...

  9. CodeForces 462B Appleman and Card Game(贪心)

    题目链接:http://codeforces.com/problemset/problem/462/B Appleman has n cards. Each card has an uppercase ...

  10. c&plus;&plus; 学籍管理系统v 1&period;0

    #include<iostream> #include <string> #include<conio.h> using namespace std; class ...