<分区>
我正在使用 Dapper 从我的 Web 应用程序运行存储过程。我首先从 SSMS 运行相同的存储过程,以确保一切正常。它从 SSMS 运行了 1-5 秒。
然后我将我的脚本复制/粘贴到我的应用程序中以通过 Dapper 运行。当我运行我的应用程序并逐步调试我的代码时,存储过程运行了超过 2 分钟并超时。这是完全相同的代码。可能导致差异的原因是什么?
这是我从 SSMS 运行的代码:
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
GO
这是从我的应用程序运行的代码:
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);
}
我什至尝试过在几台不同的机器上运行 SSMS,我总是在 1-5 秒内搞定。我已经从应用程序多次运行相同的查询,但它总是超时。
脚本本身是否有任何东西导致执行计划不同?我也在 SSMS 和我的应用程序中使用相同的登录名。