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

MySQL क्वेरी द्वारा यह इनर जॉइन/ऑर्डर इतना धीमा क्यों है?

(मुझे लगता है कि आप ids.customer_id = customer.customer_id . टाइप करना चाहते थे और नहीं customer_ids.customer_id)

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

ORDER BY mysql शायद सभी . को पुनः प्राप्त कर रहा है type=10 ग्राहक फिर उन्हें पहले नाम के आधार पर छाँटकर पहले 10 को खोजते हैं।

आप ग्राहक तालिका को असामान्य बनाकर (ग्राहक रिकॉर्ड में प्रकार की प्रतिलिपि बनाकर) या customer_id, name, type रखने के लिए मैपिंग तालिका बनाकर इसे गति दे सकते हैं। टुपल्स किसी भी स्थिति में, (type, name) . पर एक इंडेक्स जोड़ें . यदि मानचित्रण तालिका का उपयोग कर रहे हैं, तो इसका उपयोग ग्राहकों और आईडी के साथ तीन-तरफ़ा जुड़ने के लिए करें।

यदि टाइप =10 यथोचित रूप से सामान्य है, तो आप क्वेरी को ग्राहकों की तालिका में नाम से चलने के लिए बाध्य कर सकते हैं और प्रत्येक के लिए स्ट्रेट जॉइन के साथ प्रकार की जांच कर सकते हैं। यह एक कंपाउंड इंडेक्स जितना तेज़ नहीं होगा, लेकिन यह सभी मैचों को खींचने से तेज़ होगा।

और जैसा कि ऊपर सुझाव दिया गया है, MySQL द्वारा उपयोग की जा रही क्वेरी योजना को देखने के लिए अपनी क्वेरी पर एक 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. MySQL उप-चयन प्रदर्शन प्रश्न?

  2. MySQL स्थापित करना और रूट पासवर्ड जाँचना विफल रहता है?

  3. संघ के साथ दो तालिकाओं को मिलाकर एक नई तालिका बनाएं

  4. विकल्प (textarea) का उपयोग कर डेटाबेस में डेटा सम्मिलित नहीं कर सकता

  5. नेटबीन्स xdebug सभी फोरम उत्तरों के माध्यम से जाने के बावजूद कनेक्शन की प्रतीक्षा कर रहा है