CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

数据库 | Oracle | DB2 | SQL Server | MySQL | 商业智能 | BI | DBA | Sybase| SQL Server 2008

您现在的位置: IT专家网 > 数据库子站 > 数据库技巧

SQL Server索引基础知识(10)-Join时的三种算法

作者: 蝈蝈俊.net,  出处:blog, 责任编辑: 李书琴, 
2008-01-28 10:30
  SQL Server 联结时候使用的三种算法。尽管每种算法都并不是很复杂,但考虑到性能优化,在产品级的优化器实现时往往使用的是改进过的变种算法。譬如SQL Server 支持block nested loops、index nexted loops、sort-merge、hash join以及hash team。我们在这里只对上述三种基本算法的原型做一个简单的介绍。

  SQL Server索引基础知识(1)-记录数据的基本格式

  SQL Server索引基础知识(2)-聚集索引,非聚集索引

  SQL Server索引基础知识(3)-测试中常看指标和清除缓存方法

  SQL Server索引基础知识(4)-主键与聚集索引

  SQL Server索引基础知识(5)-理解newid()和newsequentialid()

  SQL Server索引基础知识(6)-索引的代价,使用场景

  SQL Server索引基础知识(7)-Indexing for AND

  SQL Server索引基础知识(8)-数据基本格式补充

  SQL Server索引基础知识(9)-Indexing for OR
  SQL Server索引基础知识(10)-Join时的三种算法

  我们书写查询语句的时候,Join 参数之前可以是下面三个 { LOOP | MERGE | HASH } JOIN 。 如果不使用,则系统自己分析那种方式快,使用那种方式。

  这其实是SQL Server 联结时候使用的三种算法。尽管每种算法都并不是很复杂,但考虑到性能优化,在产品级的优化器实现时往往使用的是改进过的变种算法。譬如SQL Server 支持block nested loops、index nexted loops、sort-merge、hash join以及hash team。我们在这里只对上述三种基本算法的原型做一个简单的介绍。

  知识点:

  Tables join总是两个两个进行的。所以下面的算法都是两个表的联结。

  Hash Join (哈希联结)

  下图是 SQL Server 标示这种联结的图标,从图标我们就可以看到这个查询的逻辑。

  HASH  JOIN

  逻辑步骤,如下图:

  •   以数据少的数据表的 Join 字段建立 Hash 值。
  •   对应的数据表计算 Join 字段的 Hash ,再与前一个数据表做比对。

  Hash Join

  特点:

  •   处理大量、未排序、无索引的数据
  •   一般来说,查询优化器会首先考虑Nested Loop和Sort-Merge,但如果两个集合量都不小且没有合适的索引时,才会考虑使用Hash Join。
  •   Hash Join也用于许多集合比较操作,inner join、left/right/full outer join、intersect、difference等等,当然了,需要保证都是等值联结。
  •   Hash Join一个较大限制是它只能应用于等值联结(equality join),这主要是由于哈希函数及其桶的确定性及无序性所导致的。
    共4页。 1 2 3 4 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅


    
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i