6

Aktualizacja: Stworzyłem propozycję wdrożenia kontroli podpowiedzi w przyszłej wersji EF. Go here to vote for it.Jak kontrolować sniffing parametrów i/lub wskazówki w strukturze encji?

Mam problem z tym, że jedno z moich zapytań na temat Entity Framework (EF) trwa bardzo długo, aby wykonać je na Sql Server, chociaż kiedy skopiuję i wkleję wygenerowany TSQL do Sql Server Management Studio (SSMS) działa bardzo szybko. Po pewnym dochodzeniu odkryłem, że mam problem z wykrywaniem parametrów, a correct way to fix it polega na wstawieniu jednej z wielu podpowiedzi do zapytań (OPTYMALIZACJA DO, REKOMPILOWANIE, itd.). Jak wstawić te wskazówki do moich zapytań EF?

Podobne pytania przychodzące na ten temat z różnych perspektyw to: here, here i here.

Odpowiedz

1

Aby zastosować wskazówkę na kwerendzie generowania przez EF, należy użyć prowadnic plan, więcej informacji tutaj: One to one join Not fast enough in SQL Server

+0

Czy ktoś ma rzeczywisty przykład EF tego? –

+0

Czy możesz wyjaśnić swój scenariusz? Stawiłem czoła temu problemowi dawno temu i ostateczne rozwiązanie było wokół niego, a nie przez. – Alireza

+1

Wymyśliłem inne rozwiązanie oparte na przechwytywaczach, które są, jak sądzę, nowszą funkcją EF (prawdopodobnie nie istniały w momencie Twojej odpowiedzi). Zobacz: http://stackoverflow.com/questions/26761827/adding-a-query-hint-when-calling-tvf –

1

Jeśli wykonywane są procedury składowane, można zadeklarować parametry procedury składowanej wewnętrznie.

tj.

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 

Spowoduje to zatrzymanie buforowania SQL Server wszelkich parametrów, które są przekazywane do SP.

+1

dziękuję za odpowiedź, ale niestety szukam sposobu, aby dodać podpowiedzi do zapytania EF generuje, a nie procedurę przechowywaną. – Mike

+1

Miałem szybki google i nie ma nic oczywistego dla twojego problemu z EF, inne ORMS takie jak NHibernate pozwalają na wskazówki do zapytania. Poniższe wpisy są najbliższym rozwiązaniem dla Twojego problemu: http://stackoverflow.com/questions/8031069/how-can-i-specify-an-index-hint-in-entity-framework http : //stackoverflow.com/questions/926656/entity-framework-with-nolock –

Powiązane problemy