RSS订阅
RSS订阅TT数据库

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

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

导读:本文是对SQL Server 2005合并联接算法的简介、最佳使用、测试环境、条件以及测试语句等方面的详细介绍。

关键词:SQL Server2005 合并联结算法 合并算法 哈希算法

正在加载数据...

  简介:

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

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

  最佳使用:

  合并联接本身的速度很快,但如果需要排序操作,选择合并联接就会非常费时。然而,如果数据量很大且能够从现有 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 2005,微软发布了公共语言运行库(CLR),允许开发人员和DBA能够利用SQL Server之外的托管代码。CLR为那些懂的.net开发语言,但是不懂的T-SQL语言的人……
我们如何将现有的T-SQL脚本进行合并?是不是SQL Server 2005所有的版本都有SSIS数据库维护功能?是什么在操纵SSIS包?作者在本文中对这些问题作了详细解答。
SQL Server 2005维护问题具体涉及到哪些方面?我们如何访问数据库的这些维护功能?基础界面又是什么样?SSIS数据库维护功能的定义是什么?这些作者在本文中作了详细回答。
我才刚刚开始学习SQL Server 2005,我简直不敢相信SSIS和DTS比起来竟然这么难。我想在两个小时之内将一份Excel表格里的数据导入进去,但是用DTS的话只需要两分钟……
我目前用的是SQL Server Integration Services。我进入Business Intelligence Development Studio试图创建新项目时,却收到了如下的错误信息……,我如何才能解决这个问题呢?

本专题介绍了SQL Server服务代理相关方面的知识,包括SQL Server服务代理基础知识的概述、消息类型、契约、队列、服务和路由、SEND命令和RECEIVE命令、性能方面的改进以及对运行状况的监控等等。

无论你是否计划将SQL Server数据库转换服务(DTS)包迁移到SQL Server集成服务(SSIS)或在SQL Server 2005里运行DTS包,都需要专家的一些建议。这一指南主要是包括SSIS的相关基础知识、技巧帮助你进行SSIS调整,还介绍了SSIS有经验的一些用户的具体信息等等。

子查询是一个嵌套在SELECT、INSERT、UPDATE 或DELETE语句,或者另一个子查询里的查询。一个子查询可以返回一行或多行结果给父查询。标量子查询是只返回一个值的查询:只有一个字段的一行记录。标量子查询可以在SQL语句的大多数位置,其中你可以使用一个表达式或一个实际值。
最新更新
专家答疑
技巧
Michael Hillenbrand
你能解释一下数据库公程师、数据库架构师以及数据库管理员之间有什么区别吗?数据库管理员:这是目前最普遍使用的对从事数据库相关的工作的人的头衔。数据库管理员是指……
Brian Peasland
对5GB大小的Oracle 7.3存档或删除的最佳办法是什么?为了便于管理机构查询,这些数据至少需要再用20年的时间。我们担心将来我们不能对它重新获取并迁入一个更新的……
Rudy Limeback
如何创建一个约束限制2007年1月1日之前的日期被录入?用CHECK约束就可以。如下面的示例……