7

更新: EF の将来のバージョンでヒント コントロールを実装するための提案を作成しました。ここに行って投票してください。

Entity Framework (EF) クエリの 1 つが Sql Server で実行するのに非常に長い時間がかかるという問題がありますが、生成された TSQL をコピーして Sql Server Management Studio (SSMS) に貼り付けると、非常に高速に実行されます。調査の結果、パラメーター スニッフィングの問題が発生していることがわかりました。これを修正する正しい方法は、多くのクエリ ヒント (OPTIMIZE FOR、RECOMPILE など) の 1 つを挿入することです。これらのヒントを EF クエリに挿入するにはどうすればよいですか?

さまざまな観点からの関連する質問は、ここここ、およびここにあります。

4

2 に答える 2

1

EF によって生成されたクエリにヒントを適用するには、プラン ガイドを使用する必要があります。詳細については、ここを参照してください。

于 2012-06-07T04:13:21.840 に答える
1

ストアド プロシージャを実行している場合は、ストアド プロシージャのパラメータを内部的に宣言できます。

いえ

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 に答える