6

अद्यतन: मैंने ईएफ के भविष्य के संस्करण में संकेत नियंत्रण लागू करने के लिए एक सुझाव बनाया है। Go here to vote for it.मैं इकाई ढांचे में पैरामीटर स्नीफिंग और/या क्वेरी संकेतों को कैसे नियंत्रित करूं?

मैं हालांकि जब मैं कॉपी और पेस्ट Sql सर्वर प्रबंधन स्टूडियो में उत्पन्न TSQL (SSMS), एक समस्या है जहाँ मेरे इकाई की रूपरेखा (EF) प्रश्नों में से एक एक बहुत लंबे समय ले जा रहा है Sql सर्वर में निष्पादित करने के लिए है यह बेहद तेज़ चलता है। कुछ जांच के बाद मुझे पता चला कि मुझे एक पैरामीटर स्नीफिंग समस्या का सामना करना पड़ रहा था, और correct way to fix it कई क्वेरी संकेतों में से एक को सम्मिलित करना है (ऑप्टिमाइज़, रिकॉम्प्ली, और इसी तरह)। मैं इन संकेतों को अपने ईएफ प्रश्नों में कैसे डालूं?

विभिन्न दृष्टिकोणों से इस पर आने वाले संबंधित प्रश्न here, here, और here हैं।

उत्तर

1

एक प्रश्न पर एक संकेत लागू करने के लिए एफई द्वारा तैयार करते हैं तो योजना गाइड, अधिक जानकारी का उपयोग करना चाहिए: One to one join Not fast enough in SQL Server

+0

क्या किसी के पास इसका वास्तविक ईएफ उदाहरण है? –

+0

क्या आप अपने परिदृश्य को समझा सकते हैं? मुझे बहुत समय पहले इस मुद्दे का सामना करना पड़ा और अंतिम समाधान इसके आसपास था, न कि। – Alireza

+1

मैं इंटरसेप्टर्स के आधार पर एक अलग समाधान के साथ आया, जो मुझे विश्वास है, ईएफ में एक नई सुविधा (शायद आपके उत्तर के समय मौजूद नहीं थी)। देखें: http://stackoverflow.com/questions/26761827/adding-a-query-hint-when-calling-tvf –

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 सर्वर कैशिंग को रोक देगा।

+1

अपने जवाब के लिए धन्यवाद, लेकिन दुर्भाग्य से मैं क्वेरी में संकेत डालने का एक तरीका के लिए देख रहा हूँ कि ईएफ उत्पन्न, एक संग्रहित प्रक्रिया नहीं है। – Mike

+1

मेरे पास एक त्वरित Google है और ईएफ के साथ आपकी समस्या के लिए कुछ भी स्पष्ट नहीं है, अन्य ओआरएमएस जैसे कि 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 –

संबंधित मुद्दे