SQL Server索引基础知识(10)-Join时的三种算法
2008-02-19 09:53:06 来源:WEB开发网核心提示:我们书写查询语句的时候,Join 参数之前可以是下面三个 { LOOP | MERGE | HASH } JOIN ,SQL Server索引基础知识(10)-Join时的三种算法, 如果不使用,则系统自己分析那种方式快,需要保证都是等值联结, Hash Join一个较大限制是它只能应用于等值联结(equality j
我们书写查询语句的时候,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 标示这种联结的图标,从图标我们就可以看到这个查询的逻辑。
逻辑步骤,如下图:
以数据少的数据表的 Join 字段建立 Hash 值。
对应的数据表计算 Join 字段的 Hash ,再与前一个数据表做比对。
特点:
处理大量、未排序、无索引的数据
一般来说,查询优化器会首先考虑Nested Loop和Sort-Merge,但如果两个集合量都不小且没有合适的索引时,才会考虑使用Hash Join。
Hash Join也用于许多集合比较操作,inner join、left/right/full outer join、intersect、difference等等,当然了,需要保证都是等值联结。
Hash Join一个较大限制是它只能应用于等值联结(equality join),这主要是由于哈希函数及其桶的确定性及无序性所导致的。
- ››SQL Server 2008 R2 下如何清理数据库日志文件
- ››sqlite 存取中文的解决方法
- ››SQL2005、2008、2000 清空删除日志
- ››SQL Server 2005和SQL Server 2000数据的相互导入...
- ››sql server 2008 在安装了活动目录以后无法启动服...
- ››sqlserver 每30分自动生成一次
- ››sqlite 数据库 对 BOOL型 数据的插入处理正确用法...
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
更多精彩
赞助商链接