SQL CREATE INDEX Statement

क्रिएट इंडेक्स स्टेटमेंट के बारे में जानें और डेटाबेस प्रदर्शन को बेहतर बनाने का तरीका जानें

SQL CREATE INDEX Statement क्या हैं?

CREATE INDEX स्टेटमेंट का उपयोग टेबल पर इंडेक्स बनाने के लिए किया जाता है।

इंडेक्स का उपयोग डेटाबेस से डेटा को अन्यथा की तुलना में तेज़ी से पुनर्प्राप्त करने के लिए किया जाता है। उपयोगकर्ता अनुक्रमणिका नहीं देख सकते, उनका उपयोग खोजों/प्रश्नों को तेज़ करने के लिए किया जाता है।

💡महत्वपूर्ण नोट:

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

इंडेक्स सिंटैक्स बनाएं

किसी तालिका में एक अनुक्रमणिका बनाता है. डुप्लिकेट मानों की अनुमति है:

मूल क्रिएट इंडेक्स सिंटैक्स:

CREATE INDEX index_name
ON table_name (column1, column2, ...);

अद्वितीय इंडेक्स सिंटैक्स बनाएं

किसी तालिका में एक अद्वितीय अनुक्रमणिका बनाता है. डुप्लिकेट मानों की अनुमति नहीं है:

अद्वितीय सूचकांक सिंटैक्स:

CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);

⚠️नोट:

इंडेक्स जनरेट करने का सिंटैक्स अलग-अलग डेटाबेस में अलग-अलग होता है। तो: अपने डेटाबेस में इंडेक्स बनाने के लिए सिंटैक्स की जाँच करें।

CREATE INDEX उदाहरण

नीचे दिया गया SQL कथन "व्यक्ति" तालिका में "LastName" कॉलम पर "idx_lastname" नामक एक इंडेक्स बनाता है:

सिंगल कॉलम कोड:

CREATE INDEX idx_lastname
ON Persons (LastName);

यदि आप स्तंभों के संयोजन को अनुक्रमित करना चाहते हैं, तो आप स्तंभ नामों को अल्पविराम से अलग करके कोष्ठक में सूचीबद्ध कर सकते हैं:

मल्टी कॉलम कोड:

CREATE INDEX idx_pname
ON Persons (LastName, FirstName);

ड्रॉप इंडेक्स स्टेटमेंट

ड्रॉप इंडेक्स स्टेटमेंट का उपयोग किसी इंडेक्स को टेबल से ड्रॉप करने के लिए किया जाता है।

MS Access:

DROP INDEX index_name ON table_name;

SQL Server:

DROP INDEX table_name.index_name;

DB2/Oracle:

DROP INDEX index_name;

MySQL:

ALTER TABLE table_name
DROP INDEX index_name;

कोडिंग के लाभ और अवधारणाएँ

फ़ायदे

  • डेटा पुनर्प्राप्ति गति में उल्लेखनीय सुधार होता है
  • खोज और सॉर्टिंग प्रदर्शन में सुधार करता है
  • JOIN संचालन के प्रदर्शन में सुधार करता है
  • WHERE क्लॉज़ के साथ क्वेरीज़ को तेज़ करें

टिप्पणियाँ

  • अतिरिक्त भंडारण स्थान की आवश्यकता है
  • INSERT, UPDATE, DELETE संचालन को धीमा कर देता है
  • बार-बार अपडेट किए जाने वाले कॉलम के लिए उपयुक्त नहीं है
  • बहुत सारे कोड रखरखाव संबंधी समस्याएँ पैदा कर सकते हैं

सर्वोत्तम अभ्यास

  • बार-बार खोजे जाने वाले कॉलम पर इंडेक्स बनाएं
  • मुख्य रूप से बड़ी तालिकाओं पर इंडेक्स का उपयोग करें
  • WHERE, JOIN, ORDER BY का उपयोग करके कॉलम को प्राथमिकता दें
  • कोड के प्रदर्शन का नियमित रूप से मूल्यांकन करें

शैली के उदाहरण

उपयोगकर्ता तालिका

बार-बार खोजे गए स्तंभों के लिए अनुक्रमणिकाएँ

- ईमेल द्वारा त्वरित खोज इंडेक्स बनाएं idx_users_email उपयोगकर्ताओं पर (ईमेल); -- नाम से खोजें इंडेक्स idx_users_name बनाएं उपयोगकर्ताओं पर (अंतिम नाम, प्रथम नाम);

आदेशों की तालिका

दिनांक और स्थिति पर आधारित प्रश्न

-- तिथि के अनुसार आदेश इंडेक्स बनाएं idx_orders_date ऑनऑर्डर्स(ऑर्डरडेट); - स्थिति और तारीख के अनुसार इंडेक्स idx_orders_status बनाएं ऑनऑर्डर (स्थिति, ऑर्डर दिनांक);

उत्पादों की तालिका

प्रकार और कीमत के अनुसार फ़िल्टर करें

- श्रेणी के अनुसार उत्पाद इंडेक्स idx_products_category बनाएं ONउत्पाद(श्रेणीआईडी); -- मूल्य सीमा संबंधी प्रश्न इंडेक्स idx_products_price बनाएं उत्पादों पर (कीमत);

प्रतीकों का उपयोग कब करें

जबकि कोड उपयोगी होते हैं

  • बड़ी टेबलें (10,000+ पंक्तियाँ)
  • अक्सर खोजे जाने वाले कॉलम
  • WHERE, JOIN, ORDER BY का उपयोग करने वाले कॉलम
  • कम NULL मान वाले कॉलम
  • अद्वितीय मान वाले कॉलम

जब प्रतीक उपयोगी नहीं होते

  • छोटी मेजें
  • बार-बार अद्यतन किए गए कॉलम
  • एकाधिक NULL मान वाले कॉलम
  • कम अद्वितीय मान वाले कॉलम
  • दुर्लभ रूप से खोजे गए कॉलम

अभ्यास

SQL क्रिएट इंडेक्स स्टेटमेंट का उद्देश्य क्या है?

तालिका का बैकअप बनाने के लिए
✗ ग़लत! CREATE INDEX स्टेटमेंट का उपयोग बैकअप बनाने के लिए नहीं किया जाता है
अनुक्रमणिका बनाकर शीघ्रता से डेटा पुनर्प्राप्त करें
✓ ठीक है! क्रिएट इंडेक्स स्टेटमेंट का उपयोग डेटाबेस प्रदर्शन को बेहतर बनाने के लिए इंडेक्स बनाने के लिए किया जाता है, जो डेटा रिकवरी को गति देता है
तालिकाओं में डेटा अखंडता सुनिश्चित करें
✗ ग़लत! प्राथमिक कुंजी, विदेशी कुंजी, चेक जैसी बाधाओं द्वारा डेटा अखंडता सुनिश्चित की जाती है
किसी तालिका में किसी मौजूदा अनुक्रमणिका को हटाने के लिए हटाएँ
✗ ग़लत! यह ड्रॉप इंडेक्स स्टेटमेंट का उद्देश्य है