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

mysql क्वेरी में चयन के भीतर चयन का उपयोग करना

MySQL में, इस तरह एक सबक्वायरी करना एक "सहसंबद्ध क्वेरी" है। इसका मतलब है कि बाहरी SELECT . के परिणाम आंतरिक SELECT . के परिणाम पर निर्भर करता है . नतीजा यह है कि आपकी आंतरिक क्वेरी प्रति पंक्ति एक बार निष्पादित की जाती है, जो बहुत धीमी है।

आपको इस क्वेरी को दोबारा करना चाहिए; चाहे आप दो बार शामिल हों या दो प्रश्नों का उपयोग करें, ज्यादातर अप्रासंगिक है। दो बार शामिल होने से आपको मिलेगा:

SELECT something
FROM posts
INNER JOIN tag_map ON tag_map.id = posts.id
INNER JOIN tags ON tags.tag_id = tag_map.tag_id
WHERE tags.tag IN ('tag1', ...)

अधिक जानकारी के लिए, MySQL मैनुअल को उपश्रेणियों को जॉइन में बदलने पर देखें।

युक्ति:EXPLAIN SELECT आपको दिखाएगा कि कैसे अनुकूलक आपकी क्वेरी को संभालने की योजना बना रहा है। अगर आपको DEPENDENT SUBQUERY दिखाई देता है आपको रिफैक्टर करना चाहिए, ये मेगा-स्लो हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अंतिम 3 वर्णों के अनुसार आदेश

  2. एक MySQL तालिका में लापता मानों को इंटरपोलेट करें

  3. एक तालिका में सभी वस्तुओं का चयन करना और दूसरी तालिका के साथ जुड़ना, नल की अनुमति देना

  4. लेन-देन के दौरान लिखने के लिए केवल पढ़ने के लिए हाइबरनेट सत्र को कैसे परिवर्तित करें (मास्टर/स्लेव डीबी)

  5. दो चुनिंदा बयानों में शामिल होना