मैंने एक एप्लिकेशन के एक धीमे सेक्शन को दर्शाया, जो हमें किसी अन्य कंपनी से विरासत में मिला है जैसे कि एक उपकुंजी के बजाय एक आंतरिक जॉइन का उपयोग करने के लिए:
WHERE id IN (SELECT id FROM ...)
Refactored क्वेरी लगभग 100x तेज चलती है। (~ 50 सेकंड से ~ 0.3) मुझे सुधार की उम्मीद थी, लेकिन क्या कोई समझा सकता है कि यह इतना कठोर क्यों था? जहां क्लॉज में इस्तेमाल किए गए कॉलम सभी अनुक्रमित थे। क्या SQL क्वेरी को पंक्ति या कुछ के अनुसार एक बार खंड में निष्पादित करता है?
अपडेट - परिणाम स्पष्ट करें:
अंतर "जहां आईडी में ()" क्वेरी के दूसरे भाग में है -
2 DEPENDENT SUBQUERY submission_tags ref st_tag_id st_tag_id 4 const 2966 Using where
शामिल होने के साथ बनाम 1 अनुक्रमित पंक्ति:
SIMPLE s eq_ref PRIMARY PRIMARY 4 newsladder_production.st.submission_id 1 Using index