Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL में INDEX, PRIMARY, UNIQUE, FULLTEXT के बीच अंतर?

मतभेद

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

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

    आपका डेटाबेस सिस्टम एक UNIQUE इंडेक्स को कॉलम पर लागू करने की अनुमति दे सकता है जो NULL मानों की अनुमति देता है, इस स्थिति में दो पंक्तियों को समान होने की अनुमति है यदि उन दोनों में एक NULL मान है (यहाँ तर्क यह है कि NULL को स्वयं के बराबर नहीं माना जाता है)। हालांकि, आपके आवेदन के आधार पर, आप हो सकता है यह अवांछनीय है:यदि आप इसे रोकना चाहते हैं, तो आपको संबंधित कॉलम में NULL मानों की अनुमति नहीं देनी चाहिए।

  • प्राथमिक एक अद्वितीय अनुक्रमणिका की तरह कार्य करता है, सिवाय इसके कि इसे हमेशा 'प्राथमिक' नाम दिया जाता है, और एक मेज पर केवल एक ही हो सकता है (और वहां चाहिए हमेशा एक रहो; हालांकि कुछ डेटाबेस सिस्टम इसे लागू नहीं करते हैं)। प्राथमिक अनुक्रमणिका तालिका में किसी भी पंक्ति को विशिष्ट रूप से पहचानने के लिए प्राथमिक साधन के रूप में अभिप्रेत है, इसलिए UNIQUE के विपरीत इसका उपयोग किसी भी कॉलम पर नहीं किया जाना चाहिए जो NULL मानों की अनुमति देता है। आपकी प्राथमिक अनुक्रमणिका उन स्तंभों की सबसे छोटी संख्या पर होनी चाहिए जो किसी पंक्ति की विशिष्ट रूप से पहचान करने के लिए पर्याप्त हों। अक्सर, यह केवल एक कॉलम होता है जिसमें एक अद्वितीय ऑटो-इन्क्रीमेंट नंबर होता है, लेकिन अगर कुछ और है जो विशिष्ट रूप से एक पंक्ति की पहचान कर सकता है, जैसे कि देशों की सूची में "कंट्रीकोड", तो आप इसके बजाय इसका उपयोग कर सकते हैं।

    कुछ डेटाबेस सिस्टम (जैसे कि MySQL का InnoDB) एक टेबल के रिकॉर्ड को डिस्क पर उसी क्रम में स्टोर करेगा जिस क्रम में वे PRIMARY इंडेक्स में दिखाई देते हैं।

  • पूर्ण पाठ अनुक्रमणिका उपरोक्त सभी से भिन्न हैं, और उनका व्यवहार डेटाबेस सिस्टम के बीच महत्वपूर्ण रूप से भिन्न है। FULLTEXT इंडेक्स केवल MATCH () / AGAINST () क्लॉज के साथ की गई पूर्ण टेक्स्ट खोजों के लिए उपयोगी होते हैं, उपरोक्त तीनों के विपरीत - जो आमतौर पर b-पेड़ों का उपयोग करके आंतरिक रूप से कार्यान्वित किए जाते हैं (सबसे बाएं कॉलम से शुरू होने वाले चयन, सॉर्टिंग या रेंज की अनुमति देते हैं) या हैश टेबल (सबसे बाएं कॉलम से शुरू होने वाले चयन की अनुमति)।

    जहां अन्य अनुक्रमणिका प्रकार सामान्य-उद्देश्य वाले होते हैं, एक FULLTEXT अनुक्रमणिका विशेषीकृत होती है, जिसमें यह एक संकीर्ण उद्देश्य को पूरा करता है:इसका उपयोग केवल "पूर्ण पाठ खोज" सुविधा के लिए किया जाता है।

समानताएं

  • इन सभी इंडेक्स में एक से अधिक कॉलम हो सकते हैं।

  • FULLTEXT के अपवाद के साथ, कॉलम ऑर्डर महत्वपूर्ण है:किसी क्वेरी में इंडेक्स उपयोगी होने के लिए, क्वेरी को बाईं ओर से शुरू होने वाले इंडेक्स से कॉलम का उपयोग करना चाहिए - यह केवल दूसरे, तीसरे या चौथे भाग का उपयोग नहीं कर सकता है अनुक्रमणिका, जब तक कि यह स्थिर मानों से मेल खाने के लिए अनुक्रमणिका में पिछले स्तंभों का भी उपयोग नहीं कर रहा हो। (किसी क्वेरी के लिए उपयोगी होने के लिए FULLTEXT अनुक्रमणिका के लिए, क्वेरी को सभी . का उपयोग करना चाहिए इंडेक्स के कॉलम।)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL / MariaDB तालिका के लिए वर्तमान Auto_Increment अनुक्रम संख्या कैसे प्राप्त करें

  2. MySQL में कॉलम मानों की अदला-बदली

  3. MySQL:डेटाबेस पर **सभी** विशेषाधिकार प्रदान करें

  4. मैं MySQL में कमांड लाइन का उपयोग करके SQL फ़ाइल कैसे आयात करूं?

  5. रिकॉर्ड से HTML टैग हटाएं