आप कोशिश कर सकते हैं एक बहु-चरण तालिका मूल्यवान फ़ंक्शन का उपयोग करना। इस तरह, सर्वर को टीवीएफ के परिणामों को तालिका चर में बदलने के लिए मजबूर किया जाता है। साथ ही, आप कोशिश कर सकते हैं अंतिम क्वेरी के प्रदर्शन को बेहतर बनाने के लिए इस तालिका प्रकार (प्राथमिक कुंजी, अद्वितीय, जांच) की घोषणा करते समय घोषणात्मक बाधाओं का उपयोग करना:
CREATE FUNCTION CocoJamboSchema.CocoJamboFunction(@parameters ...)
RETURNS @Results TABLE (
Col1 INT NOT NULL,
Col2 VARCHAR(10) NULL,
...
PRIMARY KEY(Col1)
)
AS
BEGIN
WITH MyCTE (...)
AS
(
...
)
INSERT @Results (...)
FROM MyCTE;
RETURN;
END;
SELECT ...
FROM CocoJamboSchema.CocoJamboFunction(param values) f
INNER JOIN MySchema.MyTable t ON f.Col1=t.Col1
ORDER BY t.Col1;
ORDER BY
जोड़ना न भूलें आपकी अंतिम क्वेरी का खंड।
हाल ही में, मैंने इस समाधान का उपयोग किसी अन्य दृश्य (ViewB) द्वारा उपयोग किए गए दृश्य (ViewA, DISTINCT + LEFT JOIN + GETDATE ()) को अनुकूलित करने के लिए किया था। इस मामले में (ViewA) एक अनुक्रमित दृश्य बनाना असंभव था (DISTINCT + LEFT JOIN + GETDATE () के कारण)। इसके बजाय, मैंने एक बहु-कथन TVF बनाया जिसने अंतिम क्वेरी के तार्किक पठन (कुछ मामलों में अत्यधिक) को कम करके प्रदर्शन में सुधार किया।
नोट:बेशक, आप कोशिश कर सकते हैं इंडेक्स व्यू का उपयोग करना ।