2011-12-14 18 views
40

मैं अपने संग्रहीत प्रक्रिया (SQL-Server) में दृश्यों का उपयोग कर रहा हूं। प्रदर्शन में सुधार के लिए, मैंने उस दृश्य के INDEX को बनाने का प्रयास किया है।'View_Table_Name' दृश्य पर इंडेक्स नहीं बना सकता क्योंकि दृश्य स्कीमा बाध्य नहीं है

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER VIEW VW_Table_Name 
AS 
SELECT Col1,Col2,Col3 FROM Table_Name 
GO 
CREATE UNIQUE CLUSTERED INDEX Index_Name ON [VW_Table_Name](Col1) 
GO 

यहाँ मैं दृश्य पर सूचकांक बनाया नहीं जा सकता 'VW_FML' क्योंकि दृश्य स्कीमा बाध्य नहीं है की तरह

त्रुटि हो रही है संदेश 1939, स्तर 16, राज्य 1, पंक्ति 1 ।

क्या हम SQL सर्वर में दृश्य के लिए अनुक्रमणिका बना सकते हैं?

उत्तर

60

अनुक्रमित विचारों पर कई प्रतिबंध हैं: कोई सबक्वायरी, कोई यूनियन नहीं, कोई बाहरी जुड़ता है, आदि अधिक जानकारी के लिए this article देखें। लेकिन आपके मामले के लिए, आपको बस स्कीमा बाइंडिंग के साथ दृश्य बनाना होगा।

CREATE VIEW VW_Table_Name WITH SCHEMABINDING 
AS 
SELECT Col1,Col2,Col3 FROM Table_Name 
GO 
2

चूंकि आपने एक इंडेक्स्ड देखें या materialized देखें बनाने के लिए कोशिश कर रहे हैं। यदि आप इसके ऊपर क्लस्टर्ड इंडेक्स बना रहे हैं तो "स्केमबैंडिंग के साथ" विकल्प देखने के लिए यह अनिवार्य है।

एक दृश्य एक संग्रहित क्वेरी के अलावा कुछ भी नहीं है, यदि आप उस पर एक अनुक्रमणिका बनाने जा रहे हैं, तो सूचकांक उस क्वेरी का उपयोग करने जा रहा है और उस तालिका पर इसे निष्पादित करने जा रहा है, इस मामले में आपको यह सुनिश्चित करना होगा कि तालिका नीचे नहीं बदलती है। इस प्रकार इस बाधा को लागू करने से SQL सर्वर सुनिश्चित करता है कि सबकुछ सिंक हो रहा है।

0

माइक्रोसॉफ्ट, आप सुन रहे हैं, यह बहुत उपयोगी दृश्य (कि स्कीमा बाध्यकारी के साथ अन्य दृश्यों का उपयोग) बनाने के लिए सूचीबद्ध किए जा सकता है अगर materialized बार देखा गया होगा। ऐसा लगता है कि यह पूरी तरह से संभव है। सुराग त्रुटि संदेश की अंतिम वाक्य है।

यह वह जगह है पूर्ण त्रुटि पाठ: संदेश 1937, स्तर 16, राज्य 1, पंक्ति 2 दृश्य पर सूचकांक बनाया नहीं जा सकता 'TEST.dbo.v_NH_GRM_SAP_bridge' यह एक और दृश्य 'dbo.v_NH_GRM_SAP_bridge_key_1' का संदर्भ है। अनुक्रमित दृश्य परिभाषा को हाथ से अनुक्रमित दृश्य परिभाषा में विस्तारित करने पर विचार करें।

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