易截截图软件、单文件、免安装、纯绿色、仅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),这主要是由于哈希函数及其


相关文档:

EXCLE导入SQL Server的两个问题

今天遇到一个客户,把自己之前搁置的问题摆到了面前,措手不及下处理起来走了不少弯路,最终也没有完全解决,主要还是技术储备不够。其中有关EXCLE数据导入SQL2000时遇到两个问题,在网上搜索了解决办法,收藏一下:
    1、将Excel导入到SQL sever数据库,提示说“外部表不是预期的格式”
&nbs ......

Sql Sever 2005 视图的操作

很多人特别喜欢用视图,但有的人从来不用视图.这都是两种不良的习惯.     要明确视图可以完成的工作以及使用场合.
     1.阻止选择保密列
     2.降低用户读取数据库内数据的复杂性  
     3.在数据库中添加索引以加速 ......

sql 语句总结

mysql :  将一个表的数据插入到newT 中
(newT 表须存在,且结构与select 语句对应的结构同  ,最好不用* 而是具体字段)    
       insert into newT select * from t1 where ...
也可以create table newT select f1,f2 from t1; (select into 的替代方法,my ......

SQL Server2005 远程访问配置

       从网络上看到不少关于数据库远程访问配置的文章,给我的大体印象就是配置过程复杂冗余,有不少还是错误的配制方法,大多数都让人感觉费解,鉴于此,我自己根据实际操作,写了一个数据库远程访问的配置方法,力求简单有效。有对下面配置有疑问的可以留言,我将作出回答。
1. &nb ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号