多表鏈接的三種方式詳解 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