失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 嵌套循环连接(Nested Loops) 合并联接(Merge) 哈希联接(Hash)的适用情况

嵌套循环连接(Nested Loops) 合并联接(Merge) 哈希联接(Hash)的适用情况

时间:2021-03-02 06:11:38

相关推荐

嵌套循环连接(Nested Loops)  合并联接(Merge)  哈希联接(Hash)的适用情况

1.嵌套循环连接(Nested Loops)适用范围

两个表, 一个叫外部表, 一个叫内部表.

如果外部输入非常小,而内部输入非常大并且已预先建立索引,那么嵌套循环联接将特别有效率。

关于连接时哪个表为outer表,哪个为inner表,我发现sql server会自动给你安排,和你写的位置无关,它自动选择数据量小的表为outer表, 数据量大的表为inner表。

2.合并联接(Merge)

指两个表在on的过滤条件上都有索引, 都是有序的, 这样, join时, sql server就会使用Merge join, 这样性能更好.

如果一个有索引,一个没索引,则会选择Nested Loops join.

3.哈希联接(Hash)

如果两个表在on的过滤条件上都没有索引, 则就会使用Hash join.

也就是说, 使用Hash join算法是由于缺少现成的索引.

参考资料:

Inside SQL server T-SQL.

高级查询优化概念

/zh-cn/library/ms191426(v=SQL.100).aspx

如果觉得《嵌套循环连接(Nested Loops) 合并联接(Merge) 哈希联接(Hash)的适用情况》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。