2010-12-11 68 views
5

我有搜索存儲過程,這是我的性能瓶頸。從C#調用的存儲過程比SQL Management Studio執行時間長6倍

爲了控制發生的事情,我在SP中添加了所有參數的記錄以及執行時間。

我注意到,當我叫SP從Microsoft SQL Server Management Studio中執行時間爲1.3-1.6秒,但是當我從C#調用它,它需要6-8 secods(!!!)

Parameters               | Time (ms) 
"tb *"TreeType:259Parents:212fL:13;14fV:0;lcid:2057min:0max:10sort:-1 | 6406  
"tb *"TreeType:259Parents:212fL:13;14fV:0;lcid:2057min:0max:10sort:-1 | 1346  

用LINQ調用SP。登錄設置相同。 SP使用全文搜索

這是什麼原因造成的?

+0

我不確定關於Microsoft SQL緩存系統。嘗試從管理工作室運行存儲過程,然後從C#運行。將結果與當前不同? – Anton 2010-12-11 21:54:01

+0

@Anton:我可以得到相同的結果,而不取決於呼叫次序。實際上,這個列表是按id desc排序的,所以最新的請求是最後一個。 – st78 2010-12-11 22:02:13

+0

您是否嘗試過使用'SqlCommand'而不是LINQ?您可以額外使用'Prepare'方法。你使用本地SQL Server嗎?什麼數據返回存儲過程? – Oleg 2010-12-12 00:41:13

回答

2

爲了找到這樣的問題,最好的工具是SQL事件探查器,它記錄了對數據庫的精確調用。

對我來說,不同之處在於SQL樣本傳遞的novalue,它被替換爲''和C#傳遞的空值。

相關問題