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

अनुक्रमणिका के लिए क्या करें और क्या न करें

सामान्यतया:

<एच4>1. जब तक आपको वास्तव में इसकी आवश्यकता न हो तब तक कोई अनुक्रमणिका न जोड़ें।

प्रत्येक अनुक्रमणिका लिखने को धीमा बनाती है...

<एच4>2. जहां क्लॉज पर एक इंडेक्स का इस्तेमाल किया जाएगा:
-- index on foo (bar)
select bar from foo where bar = :bar;

उसी टोकन द्वारा इसका उपयोग विदेशी कुंजी संदर्भों (दोनों तालिकाओं पर) में किया जाएगा।

-- index on foo (bar) if baz (bar) is frequently updated/deleted.
create table foo (bar references baz (bar)); 
<एच4>3. एक अनुक्रमणिका का उपयोग छँटाई के लिए किया जाएगा, खासकर जब एक सीमा से बंधा हुआ हो:
-- index on foo (bar)
select bar from foo order by bar limit 10;
<एच4>4. बहु-स्तंभ अनुक्रमणिकाएं कभी-कभी उपयोगी होती हैं जब 2. और 3 दोनों लागू होते हैं।

इस मामले में जहां स्थितियां पहले रखें, और सॉर्ट कुंजी अंतिम:

-- index on foo (baz, bar)
select bar from foo where baz between :baz1 and :baz2 group by bar;

5. अपनी तालिका के आंकड़ों को अद्यतित रखें।

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

<एच4>6. अनुक्रमणिका उपयोग आपके तालिका पुनर्विभाजन पर निर्भर करता है।

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

इसी तरह, यदि आपका डेटा इस तरह से संग्रहीत किया जाता है कि इंडेक्स स्कैन संभवतः उस तालिका के लिए लगभग कभी भी लागू होने वाले डिस्क पृष्ठ तक बेतरतीब ढंग से पहुंच जाएगा, तो योजनाकार एक पूर्ण तालिका स्कैन को प्राथमिकता देगा।

<एच4>7. उपलब्ध होने पर आंशिक/अभिव्यक्ति अनुक्रमणिका पर विचार करें।

यदि आपके पास एक फ़ील्ड है जिसमें आपकी 10% पंक्तियों को छोड़कर समान मान है, तो उस पर आंशिक अनुक्रमणिका पर विचार करें (यानी जहां वह मान नहीं है)। इसके परिणामस्वरूप इसकी वास्तविक उपयोगिता को बाधित किए बिना बहुत छोटा सूचकांक प्राप्त होता है।

यदि आप अपने कॉलम पर लागू किए गए एक्सप्रेशन के विरुद्ध लगातार क्वेरी कर रहे हैं और आप प्लेटफ़ॉर्म एक्सप्रेशन इंडेक्स ऑफ़र करते हैं, तो उस पर एक इंडेक्स जोड़ने पर विचार करें। उपयोग किए जाने पर, प्रत्येक पंक्ति के लिए व्यंजक का मूल्यांकन नहीं किया जाएगा।



  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 डायनेमिक पिवट टेबल

  2. स्क्रैच से पायथन फ्लास्क और MySQL का उपयोग करके एक वेब ऐप बनाना:भाग 4

  3. MySQL तेजी से 600K पंक्तियों में से 10 यादृच्छिक पंक्तियों का चयन करें

  4. my.cnf में MySQL डिफॉल्ट कैरेक्टर सेट को UTF-8 में बदलें?

  5. PDOException "ड्राइवर नहीं मिल सका"