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

डुप्लिकेट मान वाले कॉलम को अनुक्रमणित करना

अपूर्ण विनिर्देश के आधार पर, मैं यह करूँगा:

   CREATE UNIQUE INDEX stock_UX1 ON stock (storeid,seedid,stk)

यह अनुक्रमणिका storeid . के साथ अनुक्रमणिका की आवश्यकता को पूरा करेगी प्रमुख स्तंभ के रूप में। (और हम जानते हैं कि यह आवश्यकता होगी यदि यह InnoDB और storeid . है एक विदेशी कुंजी है।)

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

चूँकि हम जानते हैं कि (seedid,storeid) अद्वितीय है (प्राथमिक कुंजी के रूप में दिया गया), हम जानते हैं (storeid,seedid) अद्वितीय भी है, इसलिए हम अनुक्रमणिका को अद्वितीय घोषित कर सकते हैं।

अन्य विकल्प हैं; हमें ऊपर वह अनुक्रमणिका बनाने की आवश्यकता नहीं है। हम इसके बजाय बस ऐसा कर सकते हैं:

   CREATE INDEX stock_IX2 ON stock (storeid)

लेकिन यह लगभग समान मात्रा में स्थान का उपयोग करेगा, और अधिक से अधिक संभावित प्रश्नों के लिए फायदेमंद नहीं होगा।

द्वितीयक अनुक्रमणिका में तालिका की प्राथमिक कुंजी होगी; ताकि दूसरी अनुक्रमणिका में seedid . शामिल हो कॉलम, तालिका की प्राथमिक कुंजी दी गई है। यानी इंडेक्स इसके बराबर है:

   CREATE INDEX stock_IX3 ON stock (storeid,seedid)

और हम जानते हैं कि उन दो स्तंभों का संयोजन अद्वितीय है, इसलिए हम UNIQUE कीवर्ड शामिल कर सकते हैं

   CREATE UNIQUE INDEX stock_UX4 ON stock (storeid,seedid)

अगर हम फॉर्म की किसी क्वेरी पर EXPLAIN करते हैं

  EXPLAIN
  SELECT t.storeid
       , t.seedid
       , t.stk 
    FROM stock t 
   WHERE t.storeid = 'foo'

हमें सेकेंडरी इंडेक्स पर रेंज स्कैन ऑपरेशन देखने की संभावना है; लेकिन stk . का मान प्राप्त करना कॉलम को अंतर्निहित तालिका में डेटा पृष्ठों को देखने की आवश्यकता होगी। stk . सहित द्वितीयक अनुक्रमणिका में स्तंभ अनुक्रमणिका को आवरण बना देगा क्वेरी के लिए index. उत्तर में सबसे पहले अनुशंसित सूचकांक के साथ, हम EXPLAIN . की अपेक्षा करते हैं "इंडेक्स का उपयोग करना" दिखाने के लिए आउटपुट।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. IOS डिवाइस से POST विधि द्वारा दूरस्थ mysql डेटाबेस में डेटा डालें

  2. MySQL पिवट टेबल - कॉलम से पंक्तियाँ। सवाल

  3. स्प्रिंग जेपीए में सटीक मिलान रिकॉर्ड कैसे प्राप्त करें @Query

  4. MySQL जॉइन, ग्रुप बाय, ऑर्डर बाय

  5. एकाधिक श्रेणियों में मूल्य कैसे डालें