以下是引用片段: Select * From P_Order A Inner merge JOIN P_User B ON A.MobileNo=B.MobileNo Where A.MobileNo<=28001 (注:最終結果只有2條) |
這樣的屬于低選擇性語句,但最終結果也很少的語句。如前面所述,這種情況下,采.netsted loop聯接效率可能更高。
4.2 執行高選擇性選取
執行如下的SQL語句:
以下是引用片段: Select * From P_Order A Inner merge JOIN P_User B ON A.MobileNo=B.MobileNo Where A.MobileNo=28913 |
在兩個表都沒有任何索引情況下,兩張表都將執行全表掃描。要讀入所有的數據頁到內存?傮w邏輯讀取決于兩表的數據頁數。
在一個表有聚集索引或者非聚集索引情況下,該表將執行Index Seek,另一個表將出現全表掃描。內存數據緩沖區中,將有一張表只讀入最終數據所在的數據頁、一張表讀入全部數據頁。邏輯讀數取決于表在聯接中的秩序、以及無索引表的數據頁數。
在兩個表都有聚集索引情況下,邏輯讀最小,每個表只有2到3次。而且只有實際需要輸出的數據才會被讀入內存頁。兩個表都有非聚集索引情況下,消耗的邏輯讀和內存資源近似。
測試5:執行Merge Join
5.1 執行全表選取或者低選擇性選取
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/