मैं का उपयोग करना चाहिए जब KEY, PRIMARY KEY, UNIQUE KEYऔर INDEX?
मैं का उपयोग करना चाहिए जब KEY, PRIMARY KEY, UNIQUE KEYऔर INDEX?
जवाबों:
KEYऔर INDEXMySQL में पर्यायवाची हैं। उनका मतलब एक ही है। डेटाबेस में आप डेटा पुनर्प्राप्ति की गति में सुधार करने के लिए अनुक्रमित का उपयोग करेंगे । एक सूचकांक आम तौर पर में उपयोग किया जाता स्तंभों पर बनाई गई है JOIN, WHEREऔर ORDER BYखंड।
कल्पना कीजिए कि आपके पास एक टेबल है usersऔर आप उन सभी उपयोगकर्ताओं की खोज करना चाहते हैं जिनका अंतिम नाम 'स्मिथ' है। इंडेक्स के बिना, डेटाबेस को तालिका के सभी रिकॉर्डों से गुजरना होगा: यह धीमा है, क्योंकि आपके डेटाबेस में जितने अधिक रिकॉर्ड होंगे, परिणाम को खोजने के लिए उतना ही अधिक काम करना होगा। दूसरी ओर, एक सूचकांक डेटाबेस को उन प्रासंगिक पृष्ठों पर तेज़ी से छोड़ने में मदद करेगा जहाँ 'स्मिथ' रिकॉर्ड हैं। यह बहुत समान है कि हम, मनुष्य, अंतिम नाम से किसी को खोजने के लिए एक फोन बुक निर्देशिका के माध्यम से कैसे जाते हैं: हम कवर से कवर तक की निर्देशिका के माध्यम से खोज शुरू नहीं करते हैं, जब तक कि हम किसी क्रम में जानकारी सम्मिलित करते हैं जो हम कर सकते हैं 'S' पेजों को जल्दी से छोड़ने के लिए उपयोग करें।
प्राथमिक कुंजी और अद्वितीय कुंजी समान हैं। एक प्राथमिक कुंजी एक स्तंभ, या स्तंभों का एक संयोजन है, जो विशिष्ट रूप से एक पंक्ति की पहचान कर सकता है। यह अद्वितीय कुंजी का एक विशेष मामला है । एक मेज में अधिकतम एक प्राथमिक कुंजी हो सकती है, लेकिन एक से अधिक अद्वितीय कुंजी। जब आप किसी स्तंभ पर एक अद्वितीय कुंजी निर्दिष्ट करते हैं, तो तालिका में कोई दो अलग-अलग पंक्तियों का समान मान नहीं हो सकता है।
यह भी ध्यान दें कि प्राथमिक कुंजियों या विशिष्ट कुंजियों के रूप में परिभाषित कॉलम स्वचालित रूप से MySQL में अनुक्रमित होते हैं।
passengersनिम्नलिखित फ़ील्ड के साथ एक तालिका है (id, first_name, last_name, age, passport_number), तो : आप सामान्य रूप idसे प्राथमिक कुंजी होने के लिए कॉलम सेट करेंगे । एक प्राथमिक कुंजी स्वचालित रूप से एक अद्वितीय कुंजी है। मुख्य अंतर यह है कि आपके पास मेज पर केवल एक प्राथमिक कुंजी हो सकती है, और यह कि कॉलम में NULLमान नहीं हो सकते । स्थापित करने के लिए कोई जरूरत नहीं है idहोना करने के लिए स्तंभ UNIQUEक्योंकि एक प्राथमिक कुंजी के लिए यह निर्धारित करके, यह स्वतः ही अद्वितीय होने की गारंटी है ... तो फिर तुम भी सेट कर सकते हैं passport_numberकरने के लिए UNIQUEइतना है कि कोई एक से अधिक यात्री ...
NULLउस कॉलम में, बिना किसी समस्या के सम्मिलित कर सकते हैं ।
KEY और INDEX पर्यायवाची हैं।
जब प्रदर्शन माप और EXPLAIN आपको दिखाता है कि सूचकांक को जोड़ना चाहिए, तो एक लापता सूचकांक के कारण क्वेरी अक्षम है। एक इंडेक्स जोड़ने से प्रश्नों का प्रदर्शन बेहतर हो सकता है (लेकिन यह तालिका में संशोधनों को धीमा कर सकता है)।
जब आप उस स्तंभ (या स्तंभ) के मानों को अद्वितीय बनाने के लिए उपयोग करना चाहते हैं, तो आपको UNIQUE का उपयोग करना चाहिए, ताकि डुप्लिकेट मानों को सम्मिलित करने के प्रयास में कोई त्रुटि आए।
एक प्राथमिक कुंजी एक अद्वितीय बाधा है और यह भी कहा जाता है कि स्तंभ पूर्ण नहीं है। इसका उपयोग प्रत्येक पंक्ति को एक पहचान देने के लिए किया जाता है। यह एक विदेशी कुंजी बाधा के माध्यम से किसी अन्य तालिका के साथ जुड़ने के लिए उपयोगी हो सकता है। हालांकि यह एक प्रमुख कुंजी है एक मेज के लिए आवश्यक नहीं है यह आमतौर पर एक अच्छा विचार है।
प्राथमिक कुंजीNULL मूल्यों की अनुमति नहीं देती है, लेकिन अद्वितीय कुंजीNULL मूल्यों की अनुमति देती है।
हम एक तालिका में केवल एक प्राथमिक कुंजी की घोषणा कर सकते हैं , लेकिन एक तालिका में कई अद्वितीय कुंजी (कॉलम असाइन) हो सकती हैं।
PRIMARY KEYऔर UNIQUE KEYसमान हैं सिवाय इसके कि इसके अलग-अलग कार्य हैं। प्राथमिक कुंजी तालिका पंक्ति को अद्वितीय बनाती है (यानी, ठीक उसी कुंजी के साथ 2 पंक्ति नहीं हो सकती है)। आपके पास डेटाबेस तालिका में केवल 1 प्राथमिक कुंजी हो सकती है।
अद्वितीय कुंजी तालिका पंक्ति को तालिका पंक्ति में अद्वितीय बनाती है (अर्थात, कोई 2 तालिका पंक्ति का सटीक मान नहीं हो सकता है)। आपके पास 1 से अधिक अनन्य कुंजी तालिका स्तंभ हो सकते हैं (प्राथमिक कुंजी के विपरीत जिसका अर्थ है तालिका में केवल 1 तालिका स्तंभ अद्वितीय है)।
INDEXविशिष्टता भी बनाता है। MySQL (उदाहरण) अनुक्रमित स्तंभ के लिए एक अनुक्रमणिका तालिका बनाएगा। इस तरह, जब तालिका उस अनुक्रमित तालिका स्तंभ पर क्वेरी की जाती है, तो तालिका पंक्ति मान प्राप्त करना आसान होता है। नुकसान यह है कि यदि आप कई अपडेट / डिलीट / क्रिएट करते हैं, तो MySQL को इंडेक्सिंग टेबल (और यह एक प्रदर्शन अड़चन हो सकती है) को मैनेज करना होगा।
उम्मीद है की यह मदद करेगा।
UNIQUE KEYहो सकता है, NULLलेकिन PRIMARY KEYनहीं हो सकता NULL।
यूनीक कीज़: वे कॉलम जिनमें कोई दो पंक्तियाँ समान नहीं हैं
प्राथमिक कुंजी: स्तंभों की न्यूनतम संख्या का संग्रह जो किसी तालिका में प्रत्येक पंक्ति को विशिष्ट रूप से पहचान सकता है (अर्थात प्राथमिक कुंजी वाले सभी स्तंभों में कोई दो पंक्तियाँ समान नहीं हैं)। एक तालिका में एक से अधिक प्राथमिक कुंजी हो सकती हैं। यदि कोई अद्वितीय-कुंजी मौजूद है, तो यह प्राथमिक कुंजी है (तालिका में "प्राथमिक कुंजी" नहीं)। यदि कोई अद्वितीय कुंजी मौजूद नहीं है, तो एक पंक्ति को पहचानने के लिए एक से अधिक स्तंभ मानों की आवश्यकता होगी जैसे (first_name, last_name, father_name, mother_name) में कुछ तालिकाएँ प्राथमिक कुंजी का गठन कर सकती हैं।
सूचकांक: प्रश्नों का अनुकूलन करने के लिए उपयोग किया जाता है। यदि आप कई बार किसी कॉलम के आधार पर परिणामों को खोजने या क्रमबद्ध करने जा रहे हैं। एक बाइनरी ट्री एल्गोरिथ्म के साथ उदाहरण के लिए अनुक्रमित "।
प्राथमिक कुंजी - हम मेज पर एक मेज पर केवल एक प्राथमिक कुंजी रख सकते हैं और जब हम तालिका में मान दर्ज कर रहे होते हैं तो हम उस कॉलम को खाली नहीं छोड़ सकते।
अद्वितीय कुंजी - हम एक मेज पर एक से अधिक अद्वितीय कुंजी रख सकते हैं और जब हम तालिका में मान दर्ज कर रहे होते हैं तो हम उस कॉलम को खाली छोड़ सकते हैं। जब हम प्राथमिक और अद्वितीय कुंजी लागू करते हैं, तो स्तंभ अनन्य मान (समान नहीं) लेते हैं।
प्राथमिक कुंजी का उपयोग विभिन्न तालिकाओं के साथ काम करने के लिए किया जाता है। यह संबंधपरक डेटाबेस की नींव है। यदि आपके पास एक पुस्तक डेटाबेस है, तो INT प्राथमिक कुंजी "आईडी" के साथ 2 टेबल - 1) किताबें और 2) लेखक बनाना बेहतर है। फिर आप लेखकों के नाम के बजाय पुस्तकों में आईडी का उपयोग करते हैं।
यदि आप बार-बार प्रविष्टियाँ नहीं करना चाहते हैं, तो अद्वितीय कुंजी का उपयोग किया जाता है। उदाहरण के लिए आपके पास अपनी पुस्तक तालिका में शीर्षक हो सकता है और यह सुनिश्चित करना चाहता है कि प्रत्येक शीर्षक के लिए केवल एक प्रविष्टि हो।
अद्वितीय कुंजी:
प्राथमिक कुंजी