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

क्या कम कार्डिनैलिटी प्रभाव प्रदर्शन के दूसरे कॉलम वाला एक कंपाउंड इंडेक्स पर्याप्त होगा कि इसका उपयोग किया जाना चाहिए?

किसी इंडेक्स (सिंगल-कॉलम या मल्टी-कॉलम) को बनाए रखने की लागत लगभग हमेशा प्रदर्शन में सुधार से अधिक होती है जब उस इंडेक्स का उपयोग किया जाता है। यह प्रत्येक INSERT . पर एक छोटी सी वृद्धि है /DELETE , साथ ही UPDATE . के माध्यम से अनुक्रमित फ़ील्ड के मान को बदलने पर लागत . (UPDATE मामला दुर्लभ है।) तो, "एक यौगिक सूचकांक बनाए रखने" की लागत के बारे में चिंता न करें।

WHERE `vehicles`.`type` IN ('Car')
  AND `vehicles`.`user_id` = 10

जरूरत है INDEX(user_id, type)

अनुकूलक होगा

  1. पता लगाएं कि वह इंडेक्स एक संभावित उम्मीदवार है,
  2. कुछ आंकड़े जांचें, फिर
  3. या तो अनुक्रमणिका का उपयोग करें, या तय करें कि कार्डिनैलिटी खराब है और बस तालिका को स्कैन करें।

सूचकांक शामिल करें; इसके बारे में चिंता मत करो।

मैंने फ़ील्ड को इस तरह से ऑर्डर किया, न कि (type, user_id) आपके IN . के आधार पर , जिसका अर्थ है कि आपके पास कभी-कभी type . के लिए एकाधिक मान हो सकते हैं ।

यदि तालिका की सभी पंक्तियों में type = 'Car' है , कोई समस्या नहीं। मैंने जो कुछ भी कहा है वह अभी भी लागू होता है। अनावश्यक type . को शामिल करने की बर्बादी महत्वहीन है।

सभी "=" कॉलम को पहले इंडेक्स में रखना बेहतर है, फिर अधिक से अधिक एक अन्य फ़ील्ड में। आगे की चर्चा यहां




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संवेदनशील डेटा को डेटाबेस में सुरक्षित रूप से संग्रहीत करना

  2. MySQL में SUM परिणाम का डेटाटाइप

  3. php mysql में मैसेजिंग सिस्टम

  4. वर्कर फील्ड द्वारा नंबर के रूप में ऑर्डर कैसे करें?

  5. वेब एप्लिकेशन में एक साथ लेनदेन को रोकें