為什么存儲過程在代碼中運行緩慢,而在 SSMS 中運行速度很快?
我正在使用 Dapper 從我的 Web 應(yīng)用程序運行存儲過程。我首先從 SSMS 運行相同的存儲過程,以確保一切正常。它從 SSMS 運行 1-5 秒。然后我將我的腳本復(fù)制/粘貼到我的應(yīng)用程序中以通過 Dapper 運行。當(dāng)我運行我的應(yīng)用程序并逐步調(diào)試我的代碼時,存儲過程運行了超過 2 分鐘并超時。這是完全相同的代碼。什么可能導(dǎo)致差異?這是我從 SSMS 運行的代碼:DECLARE @RC intDECLARE @ownerId varchar(50)DECLARE @type varchar(50)DECLARE @dateFrom datetimeDECLARE @dateTo datetimeDECLARE @offset intDECLARE @perPage intSET @ownerId = '990042064' SET @type = 'voice' SET @dateFrom = '2018-05-16 00:00:00.000' --'YYYY-MM-DD hh:mm:ss[.nnn]' SET @dateTo = '2018-08-14 23:59:59.000' --'YYYY-MM-DD hh:mm:ss[.nnn]' SET @offset = 0 SET @perPage = 50EXECUTE @RC = dbo.IndexSearch @ownerId ,@type ,@dateFrom ,@dateTo ,@offset ,@perPageGO這是從我的應(yīng)用程序運行的代碼:using (IDbConnection db = new SqlConnection(ConnectionStringHelper.ConnectionString)){ dbRecs = db.Query<IndexRec>(@" DECLARE @RC int DECLARE @ownerId varchar(50) DECLARE @type varchar(50) DECLARE @dateFrom datetime DECLARE @dateTo datetime DECLARE @offset int DECLARE @perPage int SET @ownerId = '990042064' SET @type = 'voice' SET @dateFrom = '2018-05-16 00:00:00.000'--'YYYY-MM-DD hh:mm:ss[.nnn]' SET @dateTo = '2018-08-14 23:59:59.000'--'YYYY-MM-DD hh:mm:ss[.nnn]' SET @offset = 0 SET @perPage = 50 EXECUTE @RC = dbo.IndexSearch @ownerId , @type , @dateFrom , @dateTo , @offset , @perPage ", commandTimeout: 120);}我什至嘗試在幾臺不同的機(jī)器上運行 SSMS,我總是在 1-5 秒內(nèi)搞定。我已經(jīng)多次從應(yīng)用程序運行相同的查詢,但它總是超時。腳本本身是否會導(dǎo)致執(zhí)行計劃不同?我也使用來自 SSMS 和我的應(yīng)用程序的相同登錄名。
查看完整描述