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

MySQL क्वेरी के प्रदर्शन को बेहतर बनाने के लिए इंडेक्स का उपयोग कैसे करें

यह आलेख अनुक्रमणिका पर चर्चा करता है और आप MySQL डेटाबेस क्वेरी प्रदर्शन को बेहतर बनाने के लिए उनका उपयोग कैसे कर सकते हैं।

डेटाबेस प्रदर्शन और अनुक्रमणिका

MySQL में डेटाबेस इंडेक्स आपको SELECT . के प्रदर्शन को तेज करने में सक्षम बनाता है क्वेरी स्टेटमेंट। छोटी तालिकाओं के लिए, एक सूचकांक ज्यादा मदद नहीं करता है। हालांकि, यदि आपके पास बड़ी मात्रा में डेटा वाली तालिकाएं हैं, तो अनुक्रमणिका नाटकीय रूप से प्रदर्शन में सुधार कर सकती हैं।

निम्नलिखित व्यवहार सभी संकेत हैं कि तालिकाओं को अनुक्रमणिका जोड़ने से लाभ हो सकता है:

  • आपकी साइट बहुत धीमी गति से लोड होती है या बिल्कुल नहीं।
  • कोई एप्लिकेशन अपने डेटाबेस से कनेक्ट करने में असमर्थ है।
  • डेटाबेस क्वेरी का बैकअप लिया जाता है।

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

यदि आपके पास एक प्रबंधित VPS या प्रबंधित समर्पित सर्वर है, तो एक बढ़ा हुआ सॉर्ट बफ़र आकार अनुक्रमणिका जोड़ने के अलावा भी मदद कर सकता है। हमारे गुरु क्रू के साथ इस विकल्प पर चर्चा करने के लिए कृपया https://my.a2hosting.com पर ग्राहक पोर्टल पर एक टिकट खोलें।

डेटाबेस क्वेरी का विश्लेषण करना

यह निर्धारित करने के लिए कि अनुक्रमणिका का उपयोग करने से कौन सी तालिकाएँ लाभान्वित हो सकती हैं, आपको अपने डेटाबेस प्रश्नों का विश्लेषण करना चाहिए। चुनें समझाएं कथन आपको ऐसा करने में मदद करता है। डेटाबेस प्रश्नों का विश्लेषण करने के लिए, इन चरणों का पालन करें:

  1. SSH का उपयोग करके अपने खाते में प्रवेश करें।
  2. कमांड प्रॉम्प्ट पर, उपयोगकर्ता नाम . के स्थान पर निम्न कमांड टाइप करें अपने A2 होस्टिंग खाते के उपयोगकर्ता नाम और डेटाबेस . के साथ डेटाबेस के नाम के साथ:
    mysql -u username -p database
  3. पासवर्ड दर्ज करें प्रांप्ट पर, अपना पासवर्ड टाइप करें। mysql> संकेत प्रकट होता है।
  4. निम्न SQL कमांड टाइप करें:

    EXPLAIN SELECT * FROM table_name WHERE conditions \G
    
    यदि आप अपना स्वयं का आवेदन कोड लिखते हैं, तो आप पहले से ही चयन . जानते हैं डेटा पुनर्प्राप्त करने के लिए आपके द्वारा उपयोग किए जाने वाले कथन। यदि आप किसी तृतीय-पक्ष एप्लिकेशन का उपयोग कर रहे हैं, जैसे कि वर्डप्रेस या प्रेस्टाशॉप, तो आपको सटीक चयन निर्धारित करने के लिए स्रोत कोड या डेटाबेस लॉग की जांच करने की आवश्यकता हो सकती है। बयान जो डेटा पुनर्प्राप्त करने के लिए उपयोग किए जाते हैं।
  5. EXPLAIN SELECT . से आउटपुट कथन दिखाता है कि MySQL क्वेरी ऑप्टिमाइज़र क्वेरी को कैसे निष्पादित करेगा। उदाहरण के लिए, निम्न आउटपुट पर विचार करें:

    mysql> EXPLAIN SELECT title FROM employees WHERE lastname LIKE 'T%' \G
    *************************** 1. row ***************************
               id: 1
      select_type: SIMPLE
            table: employees
             type: ALL
    possible_keys: NULL
              key: NULL
          key_len: NULL
              ref: NULL
             rows: 142
            Extra: Using where
    1 row in set (0.00 sec)
    

    इस उदाहरण में आउटपुट:

    • संभव_कुंजी और कुंजी मान दोनों नल हैं , जो इंगित करता है कि MySQL के पास कोई अनुक्रमणिका नहीं है जिसे वह इस क्वेरी के लिए उपयोग कर सकता है।
    • पंक्तियां मान इंगित करता है कि MySQL इस क्वेरी के लिए 142 पंक्तियों को पढ़ेगा। यदि तालिका में कुल 142 पंक्तियाँ हैं, तो इसका अर्थ है कि MySQL को परिणाम सेट उत्पन्न करने के लिए प्रत्येक पंक्ति की जाँच करनी चाहिए। बड़ी तालिका के लिए इसमें कुछ समय लग सकता है।

    दूसरी ओर, यदि हम index_name . नामक एक अनुक्रमणिका बनाना चाहते हैं अंतिम नाम . के लिए कॉलम, MySQL समान क्वेरी के लिए निम्न आउटपुट उत्पन्न कर सकता है:

    mysql> EXPLAIN SELECT title FROM employees WHERE lastname LIKE 'T%' \G
    *************************** 1. row ***************************
               id: 1
      select_type: SIMPLE
            table: employees
             type: range
    possible_keys: index_name
              key: index_name
          key_len: 22
              ref: NULL
             rows: 17
            Extra: Using where; Using index
    1 row in set (0.00 sec)
    

    जैसा कि आप देख सकते हैं, possible_keys और कुंजी मान इंगित करते हैं कि MySQL को एक अनुक्रमणिका मिली है जिसका उपयोग वह क्वेरी को अनुकूलित करने के लिए कर सकता है। इसके अतिरिक्त, MySQL सभी 142 पंक्तियों के बजाय परिणाम सेट उत्पन्न करने के लिए केवल 17 पंक्तियों को पढ़ेगा। (इसका अर्थ है कि तालिका में 17 पंक्तियाँ हैं जहाँ अंतिम नाम "T" से शुरू होता है।) अंत में, अतिरिक्त value यह भी इंगित करता है कि MySQL क्वेरी के लिए एक इंडेक्स का उपयोग करेगा।

तालिका में अनुक्रमणिका जोड़ना, हटाना और देखना

अपने डेटाबेस प्रश्नों का विश्लेषण करने और यह निर्धारित करने के बाद कि प्रदर्शन बाधाएं कहां हैं, आप अनुक्रमणिका जोड़ने के लिए तैयार हैं। ऐसा करने के लिए, इन चरणों का पालन करें:

  1. SSH का उपयोग करके अपने खाते में प्रवेश करें।
  2. कमांड प्रॉम्प्ट पर, उपयोगकर्ता नाम . के स्थान पर निम्न कमांड टाइप करें अपने A2 होस्टिंग खाते के उपयोगकर्ता नाम और डेटाबेस . के साथ डेटाबेस के नाम के साथ:
    mysql -u username -p database
  3. पासवर्ड दर्ज करें प्रांप्ट पर, अपना पासवर्ड टाइप करें। mysql> संकेत प्रकट होता है।
  4. किसी तालिका में अनुक्रमणिका जोड़ने के लिए, निम्न SQL आदेश टाइप करें। table_nameबदलें तालिका के नाम के साथ, index_name नई अनुक्रमणिका के नाम के साथ (जो आप चाहते हैं कुछ भी हो सकता है), और table_column तालिका कॉलम के नाम के साथ जिसके लिए आप अनुक्रमणिका जोड़ना चाहते हैं:

    ALTER TABLE table_name ADD INDEX index_name (table_column);
    
    हालांकि इंडेक्स प्रदर्शन में सुधार कर सकते हैं, लेकिन इंडेक्स बहुत अधिक होने पर प्रदर्शन को नकारात्मक रूप से प्रभावित कर सकते हैं। ऐसा इसलिए है क्योंकि एक टेबल में जितने अधिक इंडेक्स होंगे, MySQL को उन्हें अपडेट रखने के लिए उतना ही अधिक काम करना होगा। चाल प्रदर्शन को बेहतर बनाने के लिए पर्याप्त इंडेक्स के बीच सही संतुलन खोजने की है, लेकिन इतनी नहीं कि वे प्रदर्शन को नकारात्मक रूप से प्रभावित करें।
  5. किसी तालिका से किसी अनुक्रमणिका को निकालने के लिए, निम्न SQL आदेश टाइप करें। table_nameबदलें तालिका के नाम के साथ, और index_name . को बदलें उस अनुक्रमणिका के नाम के साथ जिसे आप हटाना चाहते हैं:

    ALTER TABLE table_name DROP INDEX index_name;
    
  6. किसी तालिका के लिए सभी अनुक्रमणिका देखने के लिए, निम्न SQL आदेश टाइप करें। table_nameबदलें तालिका के नाम के साथ:

    SHOW INDEX FROM table_name \G
    
    एक इंडेक्स बनाने के बाद, आपको EXPLAIN SELECT . का उपयोग करना चाहिए प्रश्न कैसे प्रभावित होते हैं यह देखने के लिए फिर से कथन। इसके अतिरिक्त, आपको यह देखने के लिए कि क्या सुधार हैं, डेटाबेस के प्रदर्शन की निगरानी करना जारी रखना चाहिए। आपको अपने डेटाबेस के लिए इंडेक्स की इष्टतम संख्या खोजने के लिए परीक्षणों की एक श्रृंखला चलानी पड़ सकती है।

अधिक जानकारी

  • MySQL अनुकूलन और अनुक्रमणिका के बारे में अधिक जानकारी के लिए, कृपया https://dev.mysql.com/doc/refman/5.5/en/optimization-indexes.html पर जाएं।
  • व्याख्या . के बारे में अधिक जानकारी के लिए विवरण, कृपया देखें https://dev.mysql.com/doc/refman/5.5/en/explain.html।

  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. DATE_SUB () उदाहरण – MySQL

  3. MySQL:LIKE का उल्टा संस्करण क्या है?

  4. Mysql डेटाबेस दो डेटाबेस के बीच सिंक करता है

  5. MySQL कॉन्फ़िगरेशन चर सेट करना - MySQL 5.7 बनाम MySQL 8.0