मैं मुख्य रूप से एक एक्शनस्क्रिप्ट डेवलपर हूं और एसक्यूएल में कोई विशेषज्ञ नहीं है, लेकिन समय-समय पर मुझे सरल सर्वर साइड स्टफ विकसित करना है। इसलिए, मैंने सोचा कि मैं शीर्षक में प्रश्न के बारे में अधिक अनुभवी लोगों से पूछूंगा।क्या यह एक सूचकांक का उपयोग करने के लिए समझ में आता है जिसमें कम कार्डिनालिटी होगी?
मेरी समझ यह है कि आपको एक कॉलम में एक इंडेक्स सेट करके बहुत कुछ हासिल नहीं होता है जिसमें कुछ विशिष्ट मूल्य होंगे। मेरे पास एक कॉलम है जिसमें एक बूलियन मान होता है (वास्तव में यह एक छोटा सा int है, लेकिन मैं इसे ध्वज के रूप में उपयोग कर रहा हूं), और इस कॉलम का उपयोग मेरे अधिकांश प्रश्नों के WHERE खंडों में किया जाता है। एक सैद्धांतिक "औसत" मामले में, आधे रिकॉर्ड के मान 1 और दूसरा आधा, 0 होगा। इसलिए, इस परिदृश्य में, डेटाबेस इंजन एक पूर्ण तालिका स्कैन से बच सकता है, लेकिन फिर भी बहुत सारी पंक्तियां पढ़नी पड़ेगी (कुल पंक्तियां/2)।
तो, क्या मुझे यह कॉलम इंडेक्स बनाना चाहिए?
रिकॉर्ड के लिए, मैं माइस्क्ल 5 का उपयोग कर रहा हूं, लेकिन मुझे एक सामान्य तर्क में अधिक दिलचस्पी है कि यह एक स्तंभ को अनुक्रमणित क्यों नहीं करता है, जो मुझे पता है कि कम कार्डिनालिटी होगी।
अग्रिम धन्यवाद।
आपके उत्तर के लिए धन्यवाद। इस मामले में, हालांकि मैं उस कॉलम पर सॉर्ट नहीं कर रहा हूं। सक्षम/अक्षम के रूप में रिकॉर्ड चिह्नित करने के लिए केवल यही है। मैं इसे मूल रूप से नरम हटाने के लिए उपयोग कर रहा हूं। यही कारण है कि मुझे इसे अधिकांश प्रश्नों के WHERE खंड में उपयोग करना होगा। –