SQL Server 2005合并联接算法(一)

2008-8-26  选择字号:  | |
打印本文章

  简介:

  如果两个联接输入并不小但已在二者联接列上排序(例如,如果它们是通过扫描已排序的索引获得的),则合并联接是最快的联接操作。如果两个联接输入都很大,而且这两个输入的大小差不多,则预先排序的合并联接提供的性能与哈希联接相近。

  从上次我们分析来看,嵌套循环适合输入和输出都小的情况,那如果输入和输入都比较大情况下,使用合并算法什么情况下最优。

  最佳使用:

  合并联接本身的速度很快,但如果需要排序操作,选择合并联接就会非常费时。然而,如果数据量很大且能够从现有 B 树索引中获得预排序的所需数据,则合并联接通常是最快的可用联接算法。

  我们来测试一下,合并连接的最优情况:

  测试环境:表:workflowinfo1 约45万条 表workflowbase1 约4.5万条

  条件:workflowbase1中列id,creater都建立索引,workflowinfo1中workflowid建立了索引。

  如果两个联接输入并不小但已在二者联接列上排序(例如,如果它们是通过扫描已排序的索引获得的),则合并联接是最快的联接操作。如果两个联接输入都很大,而且这两个输入的大小差不多,则预先排序的合并联接提供的性能与哈希联接相近。~:(creater=4028814110830a1e01108fe379e60061’的workflowbase1表有1023条数据)

  测试语句:

  合并算法      


 select a.* from workflowbase1 a inner merge join dbo.workflowinfo1 b 
    on a.id=b.workflowid and a.creater=’4028814110830a1e01108fe379e60061’ 

  hash算法  


 select a.* from workflowbase1 a inner hash join dbo.workflowinfo1 b 
  on a.id=b.workflowid and a.creater=’4028814110830a1e01108fe379e60061’ 

  注意:这两条SQL和上一个嵌套循环的例子有区别,一个 select * 和一个是 select a.*


SQL Server 2005合并联接算法
 SQL Server 2005合并联接算法(一)
 SQL Server 2005合并联接算法(二)
 SQL Server 2005合并联接算法(三)

原文出处:http://www.cnblogs.com/zping/archive/2008/08/10/1264705.html
来源:BLOG    作者:zping    
SQL Server 2008 Integration Services都包含哪些新特征?在本章技巧中,我将着重讨论数据集成工具、SQL Server 2008 SSIS和它的三大特征。SSIS 2008中这些新特征为……
怎样在SQL Server中使用证书来创建用来在数据库中进行加密和解密的对称密钥?你可以使用CREATE SYMMETRIC KEY语句……
SQL Server 2005一个令人激动的特性是内置了加密的功能。在这个新版的SQL Server中,开发团队直接在T-SQL中加入了加密工具、证书创建和密钥管理的功能。
当你配置好服务主密钥和数据库主密钥之后,你又将如何创建证书呢?SQL Server可以创建自签名的X.509证书。本篇介绍如何使用CREATE CERTIFICATE语句来创建证书。
SQL Server 2008有允许SQL Server存储引擎将数据压缩到行和页面里的功能,部分功能在SQL Server 2005服务包2中已经提到。但是这一功能在企业版中受到了限制,并且更多地与行政相关。
本专题主要介绍SQL Server 2008的新增特征:SQL Server 2008中的T-SQL基本对象和操作、T-SQL的函数类型和数据类型以及新的安全特性等等。
本篇文章主要介绍SQL Server数据存储的物理对象和原理,包括SQL Server 2005和2008里的物理数据存储、SQL Server 2008数据类型(即Datetime、字符串、自定义及等)、在SQL Server数据库中加强数据的完整性……
本文为SQL Server 2008初学者指南,主要介绍SQL Server2008 T-SQL支持的基本元素和基本操作。
最新更新
专家答疑
技巧
Phillip Bracken
我怎样在Oracle中增加SGA_MAX_SIZE?在计算机启动的时候出现了以下错误:"ORA-03113: end-of-file on communication channel"。请您告诉我增加SGA的一些步骤。
Rudy Limeback
我想用REPLACE语句替换AddressLine1域里面的数据,也就是想删除逗号、周期、连字符,并将 '3 South '替换成'3 S ' 然后……
Brian Peasland
设计备份方案时主要考虑哪些因素?什么是RTO、MTBF和MTTR?我不敢100%肯定RTO,但是我觉得就是Return to Operation的意思。换句话说就是将系统返回到正常操作时间……