6

Обновление: Я создал предложение для реализации контроля подсказок в будущей версии EF. Go here to vote for it.Как я могу контролировать параметры sniffing и/или подсказки в структуре сущности?

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

Вопросы, относящиеся к этому с разных точек зрения, это here, here и here.

ответ

1

Чтобы применить подсказку на запросе генерирует EF, вы должны использовать направляющий план, подробнее здесь: One to one join Not fast enough in SQL Server

+0

У кого-нибудь есть пример EF? –

+0

Можете ли вы объяснить свой сценарий? Я столкнулся с этим вопросом давно, и окончательное решение было вокруг него, а не через. – Alireza

+1

Я придумал другое решение, основанное на перехватчиках, которые, я считаю, более новая функция в EF (вероятно, не существовало во время вашего ответа). См. Http://stackoverflow.com/questions/26761827/adding-a-query-hint-when-calling-tvf –

1

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

I.e.

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.

+1

Спасибо за ваш ответ, но, к сожалению, я ищу способ, чтобы добавить подсказки в запрос что EF генерирует, а не хранимую процедуру. – Mike

+1

У меня был быстрый google, и нет ничего очевидного для вашей проблемы с EF, другие ORMS, такие как NHibernate, позволяют запросить подсказки. Эти сообщения ниже являются ближайшим решением, которое я могу найти по вашему вопросу: http://stackoverflow.com/questions/8031069/how-can-i-specify-an-index-hint-in-entity-framework http : //stackoverflow.com/questions/926656/entity-framework-with-nolock –