मौजूदा SQL को दो भागों में विभाजित करने का प्रयास करें और देखें कि प्रत्येक के लिए निष्पादन समय क्या है। उम्मीद है कि यह आपको बताएगा कि धीमेपन के लिए कौन सा हिस्सा जिम्मेदार है:
भाग 1:
SELECT table_1.id
FROM table_1
LEFT JOIN table_2
ON (table_1.id = table_2.id)
WHERE table_1.col_condition_1 = 0
AND table_1.col_condition_2 NOT IN (3, 4)
AND table_2.id is NULL
और भाग 2 (यहां आंतरिक जुड़ाव पर ध्यान दें):
SELECT table_1.id
FROM table_1
JOIN table_2
ON (table_1.id = table_2.id)
WHERE table_1.col_condition_1 = 0
AND table_1.col_condition_2 NOT IN (3, 4)
AND table_1.date_col > table_2.date_col
मुझे उम्मीद है कि भाग 2 में अधिक समय लगेगा। इसमें मुझे लगता है कि date_coll पर टेबल_1 और टेबल_2 दोनों पर एक इंडेक्स मदद करेगा।
मुझे नहीं लगता कि कंपोजिट इंडेक्स आपके चयन में बिल्कुल भी मदद करेगा।
इसने कहा कि यह निदान करना कठिन है कि तीन स्थितियां एक साथ प्रदर्शन को बुरी तरह प्रभावित क्यों करेंगी। ऐसा लगता है कि यह आपके डेटा वितरण से संबंधित है। mySql के बारे में निश्चित नहीं है, लेकिन Oracle में उन तालिकाओं पर आंकड़े संग्रह करने से फर्क पड़ेगा।
आशा है कि यह मदद करता है।