2013-02-13 36 views
6
add_index :microposts, [:user_id, :created_at] 

मैं माइकल हार्टल के रेलस्टोरियल के माध्यम से जा रहा था और देखा कि वह एकाधिक कुंजी सूचकांक नामक किसी चीज़ का उपयोग कर रहा है। मुझे पता है कि इसका मतलब है कि सक्रिय रिकॉर्ड एक ही समय में दोनों चाबियों का उपयोग करता है, लेकिन मुझे सच में यकीन नहीं है कि एकाधिक कुंजी इंडेक्स का उपयोग करने के फायदे और नुकसान क्या हैं।एकाधिक कुंजी सूचकांक क्या है?

यदि कोई उत्तर दे सकता है तो मैं इसकी सराहना करता हूं।

उत्तर

11

किसी भी सूचकांक पंक्तियों के सेट को जांचने के लिए एक क्वेरी को सीमित करने की अनुमति देकर लाभ दे सकता है।

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

उदाहरण के लिए:

SELECT * FROM Mytable WHERE user_id = 123 AND created_at > '2013-02-01' 

बहु-स्तंभ सूचकांक कि user_id 123 के साथ जुड़े रहे पंक्तियों के सबसेट की संकीर्णता से, तो उस सबसेट के भीतर, यह आगे नीचे चयन हाल ही में एक created_at के साथ उन लोगों के लिए सीमित कर देता है मूल्य।

इंडेक्स में दूसरे कॉलम के बिना, आरडीबीएमएस को सभी उपयोगकर्ता_आईडी 123 के लिए पंक्तियों को स्मृति में लोड करना होगा इससे पहले कि यह निर्धारित कर सके कि वे मानदंड पास करते हैं या नहीं।

अधिक जानकारी के लिए, मेरी प्रस्तुति How to Design Indexes, Really देखें।

+0

बहुत बहुत धन्यवाद! मैं आपकी प्रस्तुति की जांच करूँगा। प्रस्तुति लिंक के लिए – jeebface

+0

धन्यवाद! – finitud

0

सामान्य रूप से, खोज कुंजी में एक से अधिक विशेषताओं हो सकती हैं जिन्हें हमने कंपोजिट कुंजी या एकाधिक कुंजी के रूप में प्रस्तुत किया है।

उदाहरण के तौर पर, विश्वविद्यालय संबंध पर एक सूचकांक पर विचार करें। यहां समग्र खोज कुंजी (course_id, year_of_enroll)। इस तरह की अनुक्रमणिका विशेष पाठ्यक्रम आईडी वाले सभी छात्रों को ढूंढने में मददगार होगी और विशेष वर्ष में उन्होंने विश्वविद्यालय में दाखिला लिया है। यह अनुक्रमणिका खोज प्रक्रिया निश्चित रूप से संबंध में हमारे वांछित रिकॉर्ड निर्धारित करेगा।