2015-03-13 56 views
1

嗨大小這聽起來愚蠢的,但因爲我已經在兩個這樣的情況下,來到我要問這裏的問題對性能的影響,由於SP在SQL服務器

我有其中有6個不同的IF塊的SP,只單塊將得到執行,只要SP從頁面調用

有其是在所有六個使用IF塊的變化僅在每塊WHERE條件

所以我做了什麼創建四個常見的表臨時表在sp的開頭,將所有四個表中所需的列插入Temp表並在a中使用此表LL 6如果與不同的塊有條件的地方

現在,當我執行的SP,它實際上給我看的性能提升相比,較早

我做的唯一的事情是通過消除相同的代碼,減少SP的大小和使用臨時表

現在的問題是出六塊只有一個會得到每次SP被稱爲有啥區別呢減少SP

+0

如果您發佈了兩個版本的SP,它將大有幫助... – 2015-03-13 11:29:03

回答

2

的大小時執行你問一個很開放的問題,所以我會提供一個相當開放的答案,直到你發佈存儲過程的兩個版本正如我在評論中所要求的那樣。這裏你去:

通常存儲過程的大小與其執行持續時間無關。我可以寫一個非常簡短的存儲過程,它需要永久執行,我可以給你寫一個很長時間的執行存儲過程。

關於執行時間,更重要的是您所處理的數據量以及是否可以有效地處理該數據量(使用索引,首先減少數據量等)。

所以我的猜測是,當你優化你的存儲過程「通過消除相同的代碼」,你也讓SP以更高效的方式訪問數據。