SQLServer儲存過程的執行計畫

2021-10-01 01:34:31 字數 1226 閱讀 8522

select * from sys.[syscacheobjects] 檢視當前快取的執行計畫
如果執行儲存過程時成功通過解析階段,則 microsoft sql server 查詢優化器將分析儲存過程中的 transact-sql 語句並建立乙個執行計畫。執行計畫描述執行儲存過程的最快方法,所依據的資訊包括:

1.表中的資料量。

2.表的索引的存在及特徵,以及資料在索引列中的分布。

3.where 子句條件所使用的比較運算子和比較值。

4.是否存在聯接以及 union、group by 和 order by 關鍵字。

查詢優化器在分析完儲存過程中的這些因素後,將執行計畫置於記憶體中。分析儲存過程和建立執行計畫的過程稱為編譯。優化的記憶體中的執行計畫將用來執行該查詢。執行計畫將駐留在記憶體中,直到重新啟動 sql server 或其他物件需要儲存空間時為止。如果隨後執行了儲存過程,而現有執行計畫仍留在記憶體中,則 sql server 將重用現有執行計畫。如果執行計畫不再位於記憶體中,則建立新的執行計畫。

重新編譯執行計畫(create proc jayjaytotest with recompile)

建立儲存過程時在其定義中指定 with recompile 選項,表明 sql server 將不對該儲存過程計畫進行快取記憶體;該儲存過程將在每次執行時都重新編譯。當儲存過程的引數值在各次執行間都有較大差異,導致每次均需建立不同的執行計畫時,可使用 with recompile 選項。此選項並不常用,因為每次執行儲存過程時都必須對其進行重新編譯,這樣會使儲存過程的執行變慢。

由於資料庫的新狀態,資料庫內的某些更改可能會導致執行計畫效率低下或不再有效。sql server 檢測這些使執行計畫無效的更改,並將計畫標記為無效。此後,必須為執行查詢的下乙個連線重新編譯新的計畫。導致計畫無效的情況包括:

1.對查詢所引用的表或檢視進行任何結構更改(alter table 和 alter view)。

2.通過語句(如 update statistics)顯式生成或者自動生成新的分發內容統計。

3.除去執行計畫所使用的索引。

4.顯式呼叫 sp_recompile。

5.對鍵的大量更改(其他使用者對由查詢引用的表使用 insert 或 delete 語句所產生的修改)。

6.對於帶觸發器的表,inserted 或 deleted 表內的行數顯著增長。

SQLserver的儲存過程

儲存過程 create 是建立儲存過程,alter 是更改 改變儲存過程 在第一次寫儲存過程時用 create 若修改儲存過程程式之後,則 alter 替換create 再執行 在資料庫中 begin end 為大括號的意思 建立儲存過程的格式 procedure可簡寫為proc proc為程式 步...

sql server儲存過程

建立表的語句 create table student sno int primary key,sname nvarchar 30 sgentle nvarchar 2 sage int,sbirth smalldatetime,sdept nvarchar 30 drop table studen...

SQLSERVER儲存過程

sqlserver儲存過程使用說明書 引言首先介紹一下什麼是儲存過程 儲存過程就是將常用的或很複雜的工作,預先用 sql語句寫好並用乙個指定的名稱儲存起來,並且這樣的語句是放在資料庫中的,還可以根據條件執行不同 sql語句,那麼以後要叫資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫 ex...