Как я могу контролировать сниффинг параметров и / или подсказки запросов в платформе сущностей? - PullRequest
7 голосов
/ 27 марта 2012

Обновление: я создал предложение по внедрению управления подсказками в будущей версии EF. Перейдите сюда, чтобы проголосовать за него.

У меня проблема в том, что один из моих запросов Entity Framework (EF) выполняется очень долго в Sql Server, хотя когда я копируюи вставьте сгенерированный TSQL в Sql Server Management Studio (SSMS), он работает очень быстро.После некоторого расследования я обнаружил, что у меня возникла проблема с прослушиванием параметров, и правильный способ исправить это - это вставить один из множества подсказок запроса (OPTIMIZE FOR, RECOMPILE и т. Д.).Как мне вставить эти подсказки в мои EF-запросы?

Связанные с этим вопросы с разных точек зрения: здесь , здесь и здесь .

Ответы [ 2 ]

1 голос
/ 07 июня 2012

Чтобы применить подсказку к запросу, сгенерированному EF, вы должны использовать руководства плана, более подробную информацию здесь: Соединение один к одному Недостаточно быстро в SQL Server

1 голос
/ 27 марта 2012

Если вы выполняете хранимые процедуры, вы можете объявить параметры хранимой процедуры внутренне.

* 1003 Т.е. *

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.

...