क्या कोई तरीका है जिससे मैं यह जान सकूं कि टेबल के लिए कौन सी इंडेक्स बनाने के लिए सबसे अच्छा तरीका है?
WHERE
खंडों में उपयोग करते हैं।
क्या कोई तरीका है जिससे मैं यह जान सकूं कि टेबल के लिए कौन सी इंडेक्स बनाने के लिए सबसे अच्छा तरीका है?
WHERE
खंडों में उपयोग करते हैं।
जवाबों:
अंगूठे के छोटे नियम। (इनमें से कुछ स्वचालित रूप से बनाए जाते हैं, लेकिन संभवतः बाद में अपने dbms के आधार पर मैन्युअल रूप से बाद में गिराए जा सकते हैं। यह मत मानिए कि आप हमेशा PostgreSQL पर काम करेंगे ।)
प्रत्येक प्राथमिक कुंजी का मतलब है कि बहु-स्तंभ प्राथमिक कुंजी में सभी स्तंभों को शामिल करने वाला एक एकल सूचकांक होना चाहिए। यदि आप मल्टी-कॉलम प्राथमिक कुंजी घोषित करते हैं तो PostgreSQL यह इंडेक्स स्वचालित रूप से बनाएगा।
ऐसे कई मामले हैं जिनमें एक एकल मल्टी-कॉलम इंडेक्स आपको कई सिंगल-कॉलम इंडेक्स की तुलना में बेहतर प्रदर्शन देता है। धीमी क्वेरी की निगरानी करें और यह पता लगाने के लिए परीक्षण करें कि कौन सा है।
मान लें कि अनुक्रमण में कोई परिवर्तन कुछ डेटाबेस गतिविधियों में सुधार करेगा और दूसरों को नीचा दिखाएगा। मैं SQL बयानों का एक सेट है, जो मैं पहले और बाद में अनुक्रमित करने के लिए परिवर्तन कर सकते हैं प्रोफ़ाइल के लिए उपयोगी पाते हैं। इस सेट में SELECT, INSERT, UPDATE और DELETE स्टेटमेंट शामिल हैं।
आपके विशेष dbms के लिए डॉक्स का अध्ययन करने के लिए कोई विकल्प नहीं है।
क्या @Catcall पहले से ही प्रदान की है , और एक छोटे सुधारात्मक जोड़ने के अलावा:
मैंने एसओ पर हाल ही में संबंधित उत्तर में कुछ मूल बातें भी कवर की हैं ।
अब तक के उत्तर आपको इंगित करते हैं कि आपको प्राथमिक कुंजियों पर अनुक्रमित बनाने की आवश्यकता है, लेकिन यह PostgreSQL में मामला नहीं है (आंशिक अपवाद लागू होते हैं)। मैं मैनुअल यहाँ उद्धृत करता हूँ :
जब एक अद्वितीय बाधा या प्राथमिक कुंजी को किसी तालिका के लिए परिभाषित किया जाता है, तो PostgreSQL स्वचालित रूप से एक अद्वितीय सूचकांक बनाता है। सूचकांक कॉलम कि प्राथमिक कुंजी या अद्वितीय बाधा बना शामिल किया गया है (यदि उपयुक्त एक multicolumn सूचकांक), और तंत्र है जो बाधा को लागू करता है।
बोल्ड जोर मेरा।
आप मल्टी-कॉलम इंडेक्स के दूसरे या बाद के कॉलम के लिए अतिरिक्त इंडेक्स बनाना चाह सकते हैं , लेकिन पहले वाला आमतौर पर एक मल्टीकोल्यूमेंट इंडेक्स द्वारा ठीक कवर किया जाता है - सिवाय इसके कि जब अतिरिक्त कॉलम इंडेक्स को अधिक बड़ा बनाते हैं। हमने चर्चा की कि इस संबंधित प्रश्न के तहत महान विस्तार से:
क्या पहले क्षेत्र पर प्रश्नों के लिए एक समग्र सूचकांक भी अच्छा है?
बहुरंगी अनुक्रमणिका , आंशिक सूचकांक और भावों पर अनुक्रमणिका विशेष रूप से PostgreSQL में शक्तिशाली उपकरण हैं। चूंकि PostgreSQL 9.2 में सूचकांक-केवल स्कैन भी हैं , अन्य RDBMS में "इंडेक्स को कवर करने" के बराबर। यह अन्य प्रकार का सूचकांक नहीं है, लेकिन मौजूदा सूचकांक प्रकारों के साथ RDBMS की एक नई क्षमता है।
प्रत्येक सूचकांक विशिष्ट लागत वहन करता है , इसलिए वास्तव में अनुक्रमण को अनुकूलित करने के लिए कुछ बुनियादी ज्ञान के आसपास कोई रास्ता नहीं है। सिर्फ ज्यादा इंडेक्स बनाने से अच्छे से ज्यादा नुकसान हो सकता है। विशेष रूप से, अनुक्रमणिका HOT अपडेट को प्रदर्शन में सुधार करने से रोक सकती है ।
आम तौर पर, ऑपरेशन लिखना ( DELETE
, UPDATE
) अधिक महंगा हो जाता है (लेकिन लाभ भी हो सकता है!), जबकि ऑपरेशन पढ़ें ( SELECT
) आम तौर पर सिर्फ लाभ होता है। बहुत सारे इंडेक्स कैश मेमोरी को समाप्त कर सकते हैं ताकि रीड ऑपरेशंस को भी नुकसान हो सके।
अंत में, यह अनुरक्षण अनुरक्षण पर विकी पृष्ठ को डुप्लिकेट या अप्रयुक्त इंडेक्स (अन्य चीजों के बीच) खोजने के लिए उपकरण प्रदान करता है।
दो विकल्प हैं।
इसे स्वयं करने का उत्तर यहाँ बहुत ही सुंदर ढंग से प्रलेखित है। तो चलिए कुछ और देखते हैं।
यदि आप कुछ स्वचालित सलाह चाहते हैं तो पगेरो आपकी सहायता कर सकता है।
कहा कि इसकी कुछ कमियां हैं।
WHERE
और पर काम करता है ORDER BY
, नहीं JOINS
।अधिक जानकारी के लिए इस वीडियो को देखें ।