क्वेरी में केवल एक कॉलम का उपयोग करते समय बहु-कॉलम MySQL अनुक्रमणिका का प्रदर्शन

मेरे डेटाबेस पर एक प्रश्न है जैसे कि:

SELECT * FROM expenses WHERE user_id = ? AND dated_on = ?

मैंने user_id और dated_on कॉलम दोनों पर तालिका में एक अनुक्रमणिका जोड़ा है। जब मैं व्यय से इंडेक्स दिखाता हूं का उपयोग करके इंडेक्स का निरीक्षण करता हूं, तो दो पंक्तियां होती हैं - एक seq_in_index 1 के मान के साथ, दूसरा seq_in_index 2 का मूल्य।

मेरा सवाल है, अगर मैं एक क्वेरी सबमिट करता हूं जो दो WHERE खंडों में से केवल एक का उपयोग करता है, उदा .:

SELECT * FROM expenses WHERE user_id = ?

क्या कोई अन्य इंडेक्स बनाने के लिए कोई फायदा है जो पूरी तरह से user_id कॉलम को अनुक्रमित करता है, या ऊपर वर्णित user_id / dated_on अनुक्रमणिका को कुशलता से उपयोग किया जाएगा ?

अंत में, क्वेरी का उपयोग करने के बारे में कैसे:

SELECT * FROM expenses WHERE dated_on = ?

इस स्थिति में seq_in_index मान 2 का सूचकांक उपयोग और प्रदर्शन को कैसे प्रभावित करता है?

0

2 उत्तर

यदि user_id और dated_on पर आपकी अनुक्रमणिका वास्तव में उस क्रम में (user_id पहले) है, तो इसका उपयोग उपयोगकर्ता_आईडी क्वेरी के लिए भी किया जाएगा। आप क्वेरी के लिए वास्तविक रणनीति देखने के लिए EXPLAIN का उपयोग करके जांच सकते हैं।

0
जोड़ा
मुझे वास्तव में यह जानने में दिलचस्पी है कि seq_in_index मान क्वेरी प्रदर्शन को कैसे बदलता है, इसलिए मैंने तदनुसार प्रश्न संपादित किया है
जोड़ा लेखक Olly, स्रोत

MySQL किसी अनुक्रमणिका का कोई बायां हिस्सा का उपयोग कर सकता है।

आपके उदाहरण में SELECT * व्यय से जहां user_id =? इंडेक्स का उपयोग करेगा लेकिन चुनें * व्यय से जहां dated_on =? नहीं होगा।

3-कॉलम इंडेक्स ए, बी, सी, <कोड> जहां ए = के लिए? और बी =? ए और बी पर एक इंडेक्स का उपयोग करेगा, लेकिन जहां ए =? और सी =? केवल ए पर एक सूचकांक का उपयोग करेगा

0
जोड़ा