sql server 查詢計畫

2021-09-02 13:51:38 字數 1679 閱讀 9850

在你的執行sql 語句之前加上 下面這句話 就可以列出相應的執行計畫

set statistics profile on

執行計畫簡單說明

【rows】:表示在乙個執行步驟中,所產生的記錄條數。(真實資料,非預期)

【executes】:表示某個執行步驟被執行的次數。(真實資料,非預期)

【stmt text】:表示要執行的步驟的描述。

【estimaterows】:表示要預期返回多少行資料。

在這個【執行過程**】中,對於優化查詢來說,我認為前三列是比較重要的。對於前二列,我上面也解釋了,意思也很清楚。 前二列的數字也大致反映了那些步驟所花的成本,對於比較慢的查詢中,應該留意它們。 【stmt text】會告訴你每個步驟做了什麼事情。對於這種**,它所要表達的其實是一種樹型資訊(一行就表示在圖形方式下的乙個節點), 所以,我建議從最內層開始去讀它們。做為示例,我來解釋一下這張**它所表達的執行過程。

第5行:【clustered index seek(object:([mynorthwind].[dbo].[customers].[pk_customers]), seek:([mynorthwind].[dbo].[customers].[customerid]=[mynorthwind].[dbo].[orders].[customerid]) ordered forward)】, 意思是說,sql server在對錶customers做seek操作,而且是按照【clustered index seek】的方式,對應的索引是【pk_customers】,seek的值**於[orders].[customerid]

第4行:【clustered index scan(object:([mynorthwind].[dbo].[orders].[pk_orders]), where:([mynorthwind].[dbo].[orders].[orderdate]>='2010-12-01 00:00:00.000' and [mynorthwind].[dbo].[orders].[orderdate]<'2011-12-01 00:00:00.000'))】, 意思是說,sql server在對錶customers做scan操作,即:最差的【表掃瞄】的方式,原因是,orderdate列上沒有索引,所以只能這樣了。

第3行:【nested loops(left outer join, outer references:([mynorthwind].[dbo].[orders].[customerid]))】, 意思是說,sql server把第5行和第4行產生的資料用【nested loops】的方式聯接起來,其中outer表是orders,要聯接的匹配操作也在第5行中指出了。

第2行:【compute scalar(define:([expr1006]=isnull([mynorthwind].[dbo].[customers].[customername],n'')))】, 意思是說,要執行乙個isnull()函式的呼叫。具體原因請參考本文前部分中給出檢視定義**。

第1行:【select [v].[orderid],[v].[customerid],[v].[customername],[v].[orderdate],[v].[summoney],[v].[finished] from [ordersview] [v] where [v].[orderdate]>=@1 and [v].[orderdate]<@2】, 通常第1行就是整個查詢,表示它的返回值。

SQL Server 查詢計畫總結

1.查詢計畫文字顯示 set showplan text on set statistics profile on 2.幾個指標 1.table scan 遍歷整個表,查詢所匹配的記錄行。這個操作將會一行一行的檢查,當然,效率也是最差的。2.index scan 根據索引,從表中過濾出來一部分記錄,...

SQL SERVER 備份計畫

master.xp cmdshell net use 1.1.1.1 資料備份 wonders,1 user 1.1.1.1 databackup 如果未開啟許可權,則使用 exec sp configure show advanced options 1 允許配置高階選項 配置選項 show ad...

SQL Server 執行計畫

預讀 邏輯讀 物理讀的解釋 預讀 sql server查詢的時候會在記憶體中生成查詢計畫,但在同時會去硬碟上取估計的資料放入快取 邏輯讀 從快取中讀取資料 物理讀 當快取中也沒有的時候,就回去硬碟讀 檢視語句執 況 set statistics profile on set statistics i...