關鍵字:sql
在兩個表都有聚集索引情況下,邏輯讀最小,每個表只有2到3次。而且只有實際需要輸出的數據才會被讀入內存頁。兩個表都有非聚集索引情況下,消耗的邏輯讀和內存資源近似。
測試5:執行Merge Join
5.1 執行全表選取或者低選擇性選取
執行SQL:
以下是引用片段: Select * From P_Order A Inner merge JOIN P_User B ON A.MobileNo=B.MobileNo |
如果兩張表都沒有任何索引,則兩張表都要進行全表掃描。所有的數據都要讀入內存頁。
邏輯讀數近似等于兩張表的數據頁總和。SQL Server處理過程中將使用到臨時表。
只有一張表有聚集索引的情形類似,SQL Server處理過程中將使用到臨時表。并且讀入所有的數據頁到內存。
如果兩張表都有聚集索引,盡管兩表的數據都會被讀入內存頁,但邏輯讀數已經大大減少,等于其中一張表總數據內存頁數加上最終輸出的數據頁數。而且SQL Server處理過程中將不需要再使用臨時表。
5.2 執行高選擇性選取
對于這樣的高選擇性SQL語句,SQL Server 將提示無法生成執行計劃。
以下是引用片段: Select * From P_Order A Inner merge JOIN P_User B ON A.MobileNo=B.MobileNo Where A.MobileNo=28913 |
但可以執行:
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/