मुझे निम्नलिखित का सामना करना पड़ रहा है और मुझे यकीन नहीं है कि सबसे अच्छा अभ्यास क्या है।दो सिंगल-कॉलम इंडेक्स बनाम MySQL में एक दो कॉलम इंडेक्स बनाम?
निम्न तालिका (जो बड़े मिल जाएगा) पर विचार करें:
आईडी पी | giver_id एफके | प्राप्तकर्ता_आईडी एफके | दिनांक
मैं इनो डीबी का उपयोग कर रहा हूं और जो मैं समझता हूं, वह दो विदेशी कुंजी कॉलम के लिए स्वचालित रूप से इंडेक्स बनाता है। हालांकि, मैं बहुत सारे प्रश्न भी करूँगा जहां मुझे किसी विशेष संयोजन से मिलान करने की आवश्यकता है:
SELECT...WHERE giver_id = x AND recipient_id = t
।
प्रत्येक ऐसा संयोजन तालिका में अद्वितीय होगा।
क्या इन कॉलम पर दो कॉलम इंडेक्स जोड़ने से कोई फायदा है, या सिद्धांत में दो अलग-अलग इंडेक्स पर्याप्त/समान होंगे?
'MySQL केवल SELECT' प्रति एक सूचकांक यह सच नहीं है अब और उपयोग कर सकते हैं, यह अच्छा होगा यदि आप अद्यतन करने की अपने जवाब संपादित किया जाएगा। – Davor
आप को समझाने के लिए क्यों कवर सूचकांक 'recipient_id' द्वारा प्रयोग की जाने में सक्षम नहीं होगा देंगे? –
MySQL में @IvoPereira मल्टी स्तंभ अनुक्रमणिका बाएं से दाएं आप सूचकांक में सभी क्षेत्रों का उपयोग करते हैं। उदाहरण के लिए यदि आप एक 'सूचकांक (col1, col2, col3, col4) है' तो सूचकांक खोजों के लिए के साथ लागू किया जाएगा एक '' WHERE' col1 = 'A'' या 'col1 =' ए 'और col2 तरह खंड = 'B'' या 'col1 =' ए 'और col2 =' बी 'और col3 =' सी 'और col4 =' डी '', लेकिन इस विशेष सूचकांक जैसे 'कुछ भी के लिए उपयोग नहीं किया जाएगा जहां col2 =' बी ' 'या 'जहां कॉल 3 =' सी 'और col4 =' डी '' क्योंकि खोज फ़ील्ड इंडेक्स परिभाषा में सबसे अधिक नहीं छोड़े गए हैं। आपको उन क्षेत्रों को कवर करने के लिए अतिरिक्त इंडेक्स जोड़ना होगा। – Slicktrick