नीचे एक संग्रहीत प्रक्रिया (संक्षिप्तता को छोटा) के अंदर एक एसक्यूएल बयान है:MySQL कहां नहीं बेहद धीमी गति से
SELECT *
FROM item a
WHERE a.orderId NOT IN (SELECT orderId FROM table_excluded_item);
यह बयान 30 सेकंड का समय लगता है! लेकिन अगर मैं आंतरिक चयन क्वेरी को हटा देता हूं, तो यह 1s तक गिर जाता है। table_excluded_item
बहुत बड़ा नहीं है, लेकिन मुझे संदेह है कि आंतरिक क्वेरी को इसके मुकाबले ज्यादा निष्पादित किया जा रहा है।
क्या ऐसा करने का कोई और अधिक प्रभावी तरीका है?
आंतरिक क्वेरी एक आश्रित सबक्वायरी है, जो कुख्यात बाधाएं हैं क्योंकि बाहरी क्वेरी की प्रत्येक पंक्ति के विरुद्ध सबक्वायरी चलाया जाता है। MySQL dev साइट पर [ऑप्टिमाइज़िंग सबक्वायरीज़] (http://dev.mysql.com/doc/refman/5.1/en/optimizing-subqueries.html) देखें। – Anthony