多表链接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP oop
Hash join的工做方式是将一个表(一般是小一点的那个表)作hash运算,将列数据存储到hash列表中,从另外一个表中抽取记录,作hash运算,到hash 列表中找到相应的值,作匹配。 性能
Nested loops的工做方式是从一张表中读取数据,访问另外一张表(一般是索引)来作匹配,nested loops适用的场合是当一个关联表比较小的时候,效率会更高。 spa
Merge Join的工做方式是先将关联表的关联列各自作排序,而后从各自的排序表中抽取数据,到另外一个排序表中作匹配,由于merge join须要作更多的排序,因此消耗的资源更多。 一般来说,可以使用merge join的地方,hash join均可以发挥更好的性能。 .net