इंडेक्स के लिए अंगूठे का सामान्य नियम WHERE
में इस्तेमाल किए गए किसी भी क्षेत्र पर एक थप्पड़ मारना है या JOIN
खंड।
कहा जा रहा है, कुछ अनुकूलन हैं जो आप कर सकते हैं। अगर आप जानते हैं कि फ़ील्ड का एक निश्चित संयोजन केवल एक ही है जिसका उपयोग कभी भी किसी विशेष तालिका में WHERE में किया जाएगा, तो आप केवल उन फ़ील्ड पर एकल बहु-फ़ील्ड कुंजी बना सकते हैं, उदा.
INDEX (field1, field2, field5)
बनाम
INDEX (field1),
INDEX (field2),
INDEX (field5)
एक बहु-क्षेत्र सूचकांक कई मामलों में अधिक कुशल हो सकता है, बनाम कई अनुक्रमणिका को स्कैन करने के लिए। नकारात्मक पक्ष यह है कि बहु-क्षेत्रीय अनुक्रमणिका केवल तभी प्रयोग योग्य होती है जब विचाराधीन फ़ील्ड वास्तव में WHERE खंड में उपयोग किए जाते हैं।
आपके नमूना प्रश्नों के साथ, चूंकि element
और field_id
सभी तीन इंडेक्स में हैं, तो आप उन्हें अपने समर्पित इंडेक्स में विभाजित करने से बेहतर हो सकते हैं। यदि ये परिवर्तनशील क्षेत्र हैं, तो बेहतर है कि इसे अपना स्वयं का समर्पित सूचकांक रखें। जैसे अगर आपको कभी भी field_id
बदलना पड़े तो थोक में, डीबी को 3 अलग-अलग इंडेक्स, बनाम अपडेट करना होगा। केवल एक समर्पित अपडेट कर रहा है।
लेकिन यह सब बेंचमार्किंग के लिए नीचे आता है - विभिन्न इंडेक्स सेटअप के साथ अपने विशेष सेटअप का परीक्षण करें और देखें कि कौन सबसे अच्छा प्रदर्शन करता है। अंगूठे के नियम आसान हैं, लेकिन 100% समय काम नहीं करते।