क्या आप अभी भी डेटाबेस सामान्यीकरण के बाद अनुक्रमण की आवश्यकता है


14

आपके द्वारा एक अच्छा सामान्यीकरण करने के बाद, क्या आपको अभी भी तालिका को अनुक्रमित करने की आवश्यकता है? यह प्रदर्शन को कैसे प्रभावित करने वाला है? क्या यह एक अच्छे सामान्यीकरण के बाद भी किसी तरह से प्रदर्शन को प्रभावित करेगा?

यदि आपके पास पहले से प्राथमिक कुंजी और विदेशी कुंजी है, तो आमतौर पर कौन से कॉलम अनुक्रमणित किए जाते हैं?

ऐसा लगता है कि यह पहले से ही एक डेटाबेस को सामान्य करने के लिए प्रभावी है। लेकिन, मुझे लगता है कि कैसे डेटाबेस डेटाबेस को प्रभावित करता है को छोड़ दिया हो सकता है। क्या यह केवल तभी प्रभावी होता है जब प्रश्नों का उपयोग किया जाता है? यह कैसे काम करता है / एक डेटाबेस को बेहतर बनाता है?


5
यदि आपके पास पहले से प्राथमिक कुंजी और विदेशी कुंजी है, तो आमतौर पर कौन से कॉलम अनुक्रमणित किए जाते हैं? खजूर। नाम। कुछ भी आपको खोज या सॉर्ट करने की आवश्यकता हो सकती है।
कार्सन 63000

प्राथमिक कुंजी पर सूचकांक की गिनती नहीं है?
कोडइन्चौस

जवाबों:


34

हाँ। वास्तव में, आपको अपनी अनुक्रमणिका पर अधिक ध्यान देने की आवश्यकता हो सकती है। सामान्यीकरण इष्टतम भंडारण के बारे में है । यह अक्सर पुनर्प्राप्ति की गति के साथ होता है , क्योंकि जटिल जोड़ के साथ अधिक जटिल प्रश्नों का उपयोग किया जाता है। कभी-कभी तेजी से पुनर्प्राप्ति गति की आवश्यकता वाले डेटाबेस को बनाए रखने वाले लोग पुनः प्राप्ति को आसान बनाने के लिए अपने डेटा को थोड़ा कम सामान्यीकृत संरचनाओं में व्यवस्थित करेंगे।


21
सामान्यीकरण का लक्ष्य भंडारण दक्षता नहीं है, बल्कि प्रविष्टि, अद्यतन और विलोपन निर्भरता को हटाना है। आगे पढ़ने

4
मैं @MichealT से सहमत हूं कि यह दक्षता के बारे में नहीं है। लॉजिकल कंसिस्टेंसी वही थी जो मुझे लिंक से मिली थी।
जेफो

मैं विवादास्पद शब्द 'दक्षता' को हटा दूंगा (हालांकि मुझे लगता है कि मूल रूप से सामान्यीकरण के सामान्य उद्देश्य को पूरा करता है) और इसके बजाय 'इष्टतम' शब्द का उपयोग करें, जो पाठक के लिए इसका मतलब है। सामान्यीकरण का वास्तविक उद्देश्य वास्तव में प्रासंगिक नहीं है कि डेटाबेस के सामान्य होने के बाद भी अनुक्रमित की आवश्यकता क्यों है।
ग्रैंडमास्टरबी

56

मुझे लगता है कि आपने डेटाबेस प्रदर्शन के लिए क्या अनुक्रमण किया है, यह गलत समझा।

एक सूचकांक डेटाबेस को पंक्तियों को खोजने में मदद करता है । इंडेक्स विशेष डेटा-संरचनाएं हैं जो अतिरिक्त डिस्क-स्पेस और कुछ प्रदर्शन के बदले में सम्मिलित करते हैं और अपडेट करते समय, डेटाबेस इंजन को पंक्तियों पर घर में मदद करते हैं।

क्योंकि वे अप-टू-डेट रखने के लिए अतिरिक्त स्थान और लागत (एक विनियामक) प्रदर्शन लेते हैं, आपको एक डेटाबेस डिजाइनर के रूप में अपने आवेदन और क्वेरी पैटर्न के अनुरूप स्पष्ट रूप से अनुक्रमित करना होगा।

सूचकांक डेटाबेस सामान्यीकरण के लिए रूढ़िवादी हैं।


4

हां सामान्यीकरण के बाद भी आपको अनुक्रमण की आवश्यकता होती है।

आप जिन तालिकाओं के साथ काम कर रहे हैं, वे सामान्यीकरण से पहले आपके पास मौजूद तालिकाओं के समान ही हैं। वास्तविकता में, अपने दम पर वे सिर्फ एक ही हैं: टेबल।

एक बात जिस पर आपको विचार करना है, हालांकि, अनुक्रमणिका आपके डेटा को तेज़ी से खोजने में आपकी मदद करती है। किसी डेटाबेस के डिज़ाइन को सामान्य बनाना हमेशा अच्छा होता है, लेकिन कभी-कभी प्रदर्शन के कारण आपको कार्यान्वयन को असामान्य बनाना पड़ता है। लेकिन यह केवल केस के आधार पर मामला है।


2

हाँ।

डेटा की खोज में तेजी लाने के लिए संकेत एक विधि है। कुछ प्रश्न प्राथमिक कुंजियों के होते हैं, जिन्हें आमतौर पर डेटाबेस इंजन द्वारा स्पष्ट रूप से अनुक्रमित किया जाता है, लेकिन अन्य प्रश्नों के अन्य स्तंभों का उपयोग करने की संभावना है। अक्सर कुछ प्रश्न स्तंभों द्वारा खोजे जाते हैं जो अद्वितीय भी नहीं होते हैं और इस प्रकार किसी भी सामान्यीकरण के बाद प्राथमिक कुंजी नहीं बन सकते हैं। आपको शायद ऐसे कॉलम को इंडेक्स करना होगा।

यह जानने के लिए केवल एक ही तरीका है कि कौन सा सूचकांक बनाना है। आवेदन में सभी प्रश्नों ले लो, उनके लिए प्रतिनिधि उदाहरण मापदंडों खोजने के लिए और डेटाबेस इंजन को अपने प्रश्नों की योजना दिखाने (सभी डेटाबेस इंजन है EXPLAIN, EXPLAIN QUERY PLANया इसी तरह के आदेश, यह अलग इंजन में अलग ढंग से कहा जाता है) और परीक्षण वे कितने समय तक ले। धीमी गति से चलने वाले लोगों को गति देने वाले सूचकांक बनाएं। और फिर से उन सूचकांकों को छोड़ना न भूलें जिन्हें आपने कोशिश की थी लेकिन संसाधनों को बर्बाद करने से बचने में मदद नहीं की।


1

सभी आम तौर पर सबसे छोटी तालिकाओं में अनुक्रमित की आवश्यकता होती है। बहुत ज्यादा हर विदेशी कुंजी को अनुक्रमित किया जाना चाहिए और बस एक एफके स्थापित करने का मतलब यह नहीं है कि आपके पास एक सूचकांक है (कम से कम कुछ डेटाबेस में नहीं, आप डीबी प्रलेखन की जांच करें)। जिन फ़ील्ड्स में आप अक्सर शामिल होते हैं या जहां क्लॉस को अनुक्रमित किया जाना चाहिए वहां उपयोग करते हैं यदि वे ऐसे हैं जो लाभान्वित होंगे (आपको डेटा में एक निश्चित मात्रा की आवश्यकता होती है, तो बुलियंस उदाहरण के लिए लाभ नहीं करते हैं) और उन लोगों को जहां सूचकांक करना संभव है।

हालाँकि, प्रत्येक इंडेक्स चयन को गति देते समय आवेषण \ अद्यतनों को धीमा कर देता है, इसलिए अपने अनुक्रमित को सावधानीपूर्वक चुनें।

एक डेटाबेस में स्वीकार्य प्रदर्शन के लिए सूचकांक महत्वपूर्ण हैं।


0

एक तीसरे सामान्य रूप के लिए आपको निश्चित रूप से सभी प्राथमिक कुंजियों पर अनुक्रमित की आवश्यकता होगी।

चाहे आपको किसी अन्य इंडेक्स की आवश्यकता हो, यह इस बात पर निर्भर करता है कि आपके डेटाबेस का उपयोग कैसे किया जाता है। उदाहरण के लिए, यदि आप किसी विशेष ज़िप कोड में नियमित रूप से ग्राहकों की खोज करते हैं, तो, ग्राहक तालिका में zip_code कॉलम को अनुक्रमित करना एक अच्छा विचार हो सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.