7

更新:我提出了在未来版本的 EF 中实施提示控制的建议。去这里投票吧。

我有一个问题,我的一个实体框架 (EF) 查询在 Sql Server 中执行需要很长时间,尽管当我将生成的 TSQL 复制并粘贴到 Sql Server Management Studio (SSMS) 中时,它运行得非常快。经过一番调查,我发现我遇到了参数嗅探问题,修复它的正确方法是插入许多查询提示之一(OPTIMIZE FOR、RECOMPILE 等)。如何将这些提示插入到我的 EF 查询中?

来自不同角度的相关问题在这里这里这里

4

2 回答 2

1

如果您正在执行存储过程,您可以在内部声明存储过程的参数。

IE

CREATE PROCEDURE sp_test
(
     @param1     NVARCHAR(10),
     @param2     INT
)

AS

DECLARE @internalParam1 NVARCHAR(10)
DECLARE @internalParam2 INT

SET @internalParam1 = @param1
SET @internalParam2 = @param2

-- REST OF YOUR QUERY

GO

这将停止 SQL Server 缓存正在传递给 SP 的任何参数。

于 2012-03-27T13:46:56.590 回答
1

要对 EF 生成的查询应用提示,您应该使用计划指南,此处提供更多信息:一对一连接在 SQL Server 中速度不够快

于 2012-06-07T04:13:21.840 回答