熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

SQL Server執行SQL語句時內存占用特點[4]

2013-11-15 14:51:32  來源: SQL Server 

  在兩個表都有聚集索引情況下邏輯讀最小每個表只有而且只有實際需要輸出的數據才會被讀入內存頁兩個表都有非聚集索引情況下消耗的邏輯讀和內存資源近似

  測試執行Merge Join

   執行全表選取或者低選擇性選取

  執行SQL:

以下是引用片段
 Select * From P_Order A
  Inner merge JOIN P_User B ON AMobileNo=BMobileNo

  如果兩張表都沒有任何索引則兩張表都要進行全表掃描所有的數據都要讀入內存頁

  邏輯讀數近似等於兩張表的數據頁總和SQL Server處理過程中將使用到臨時表

  只有一張表有聚集索引的情形類似SQL Server處理過程中將使用到臨時表並且讀入所有的數據頁到內存

  如果兩張表都有聚集索引盡管兩表的數據都會被讀入內存頁但邏輯讀數已經大大減少等於其中一張表總數據內存頁數加上最終輸出的數據頁數而且SQL Server處理過程中將不需要再使用臨時表

   執行高選擇性選取

  對於這樣的高選擇性SQL語句SQL Server 將提示無法生成執行計劃

以下是引用片段
Select * From P_Order A
  Inner merge JOIN P_User B ON AMobileNo=BMobileNo
  Where AMobileNo=

  但可以執行

以下是引用片段
 Select * From P_Order A
  Inner merge JOIN P_User B ON AMobileNo=BMobileNo
  Where AMobileNo<= (注最終結果只有條)

  這樣的屬於低選擇性語句但最終結果也很少的語句如前面所述這種情況下采用netsted loop聯接效率可能更高

   執行高選擇性選取

  執行如下的SQL語句

以下是引用片段
 Select * From P_Order A
  Inner merge JOIN P_User B ON AMobileNo=BMobileNo
  Where AMobileNo=

  在兩個表都沒有任何索引情況下兩張表都將執行全表掃描要讀入所有的數據頁到內存總體邏輯讀取決於兩表的數據頁數

  在一個表有聚集索引或者非聚集索引情況下該表將執行Index Seek另一個表將出現全表掃描內存數據緩沖區中將有一張表只讀入最終數據所在的數據頁一張表讀入全部數據頁邏輯讀數取決於表在聯接中的秩序以及無索引表的數據頁數

  在兩個表都有聚集索引情況下邏輯讀最小每個表只有而且只有實際需要輸出的數據才會被讀入內存頁兩個表都有非聚集索引情況下消耗的邏輯讀和內存資源近似

  測試執行Merge Join

   執行全表選取或者低選擇性選取

  執行SQL:

以下是引用片段
 Select * From P_Order A
  Inner merge JOIN P_User B ON AMobileNo=BMobileNo

  如果兩張表都沒有任何索引則兩張表都要進行全表掃描所有的數據都要讀入內存頁

  邏輯讀數近似等於兩張表的數據頁總和SQL Server處理過程中將使用到臨時表

  只有一張表有聚集索引的情形類似SQL Server處理過程中將使用到臨時表並且讀入所有的數據頁到內存

  如果兩張表都有聚集索引盡管兩表的數據都會被讀入內存頁但邏輯讀數已經大大減少等於其中一張表總數據內存頁數加上最終輸出的數據頁數而且SQL Server處理過程中將不需要再使用臨時表

   執行高選擇性選取

  對於這樣的高選擇性SQL語句SQL Server 將提示無法生成執行計劃

以下是引用片段
Select * From P_Order A
  Inner merge JOIN P_User B ON AMobileNo=BMobileNo
  Where AMobileNo=

  但可以執行

以下是引用片段
 Select * From P_Order A
  Inner merge JOIN P_User B ON AMobileNo=BMobileNo
  Where AMobileNo<= (注最終結果只有條)

  這樣的屬於低選擇性語句但最終結果也很少的語句如前面所述這種情況下采用netsted loop聯接效率可能更高

[]  []  []  []  


From:http://tw.wingwit.com/Article/program/SQLServer/201311/22450.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.