2015年12月11日 星期五

用程式呼叫預儲程序抓資料會timeout,但用 ssms 很快就執行完畢

第一次執行預儲程序時,SQL Server會根據傳入的參數,建立以該參數為基礎的最佳執行計畫,若更換參數且查詢結果筆數差異很大,就會造成效能嚴重低落,加入 WITH RECOMPILE 後每次執行時都會重新建立執行計畫

ALTER PROCEDURE [dbo].[結算]
@DATESfrom DATETIME,@DATESto DATETIME=NULL
WITH RECOMPILE
AS
BEGIN
...


※缺點是不再重複使用執行計畫,所以只有針對會有這情況的時候再加入,或改為針對有這情況的 select 單獨加上  OPTION(RECOMPILE) 

沒有留言:

自訂權限驗證機制

// 使用 filter [Route("api/[controller]")] [ApiController] [Authorize] [TypeFilter(typeof(CustomAsyncAuthorizationFilter))] public c...