易截截图软件、单文件、免安装、纯绿色、仅160KB

[SQL Server 2005] hash联接算法

SQL Server 2005 hash联接算法
如果两个联接输入都很大,而且这两个输入的大小差不多,则预先排序的合并联接提供的性能与哈希联接相近。但是,如果这两个输入的大小相差很大,则哈希联接操作通常快得多。
   哈希联接可以有效处理未排序的大型非索引输入。它们对复杂查询的中间结果很有用,因为:
           ·    中间结果未经索引(除非已经显式保存到磁盘上然后创建索引),而且通常不为查询计划中的下一个操作进行适当的排序。
          ·     查询优化器只估计中间结果的大小。由于对于复杂查询,估计可能有很大的误差,因此如果中间结果比预期的大得多,则处理中间结果的算法不仅必须有效而且必须适度弱化。
 
  原理
      Hash join一般用于一张小表和一张大表进行join时。Hash join的过程大致如下(下面所说的内存就指sort area,关于过程,后
面会作详细讨论):
    1.  一张小表被hash在内存中。因为数据量小,所以这张小表的大多数数据已经驻入在内存中,剩下的少量数据被放置在临时表空间中;
    2.  每读取大表的一条记录,就和小表中内存中的数据进行比较,如果符合,则立即输出数据(也就是说没有读取临时表空间中的小表的数据)。而如果大表的数据与小表中临时表空间的数据相符合,则不直接输出,而是也被存储临时表空间中。
    3.  当大表的所有数据都读取完毕,将临时表空间中的数据以其输出。
 
   如果小表的数据量足够小(小于hash area size),那所有数据就都在内存中了,可以避免对临时表空间的读写。
   如果是并行环境下,前面中的第2步就变成如下了:
      2.每读取一条大表的记录,和内存中小表的数据比较,如果符合先做join,而不直接输出,直到整张大表数据读取完毕。如果内存足够,Join好的数据就保存在内存中。否则,就保存在临时表空间中。
      1,处理大量、未排序、无索引的数据
      2 ,Hash Join一个较大限制是它只能应用于等值联结(equality join),这主要是由于哈希函数及其


相关文档:

sql中having 与group by详解

GROUP BY 实例
表 "Sales":
Company Amount
W3Course 6500
IBM 5500
W3Course 7300
SQL:
SELECT Company, SUM(Amount) from Sales
结果:
Company SUM(Amount)
W3Course 19300
IBM 19300
W3Course 19300
上面的代码是无效的,这是由于被返回的列没有进行部分合计。GROUP BY 子句能解决这个问题:
SELE ......

Sql语句使用 50个示例

Student(S#,Sname,Sage,Ssex) 学生表
Course(C#,Cname,T#) 课程表
SC(S#,C#,score) 成绩表
Teacher(T#,Tname) 教师表
问题:
1、查询“001”课程比“002”课程成绩高的所有学生的学号;
  select a.S# from (select s#,score from SC where C#='001') a,(select s#,score
  fr ......

[SQL] patindex 详解

PATINDEX
返回指定表达式中某模式第一次出现的起始位置;如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零。
语法
PATINDEX ( '%pattern%' , e­xpression )
参数
pattern
一个字符串。可以使用通配符,但 pattern 之前和之后必须有 % 字符(搜索第一个和最后一个字符时除外)。pattern 是短字符数 ......

SQL 时间格式(转)

Select CONVERT(varchar(100), GETDATE(), 0) as 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1) as 05/16/06
Select CONVERT(varchar(100), GETDATE(), 2) as 06.05.16
Select CONVERT(varchar(100), GETDATE(), 3) as 16/05/06
Select CONVERT(varchar(100), GETDATE(), 4) as 16.05.06
Select CON ......

SQL中CONVERT转化函数的用法

摘自:http://www.cnblogs.com/dicky/archive/2007/01/12/618453.html
格式:
CONVERT(data_type,expression[,style])
说明:
此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)
相互转换的时候才用到.
例子:
SELECT CONVERT(varchar(30),getdate(),101) now
结果为 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号