इसका एक समाधान MySQL सर्वर 5.6 - पूर्वावलोकन रिलीज़ (इस लेखन के समय) में है।
http://dev.mysql.com /doc/refman/5.6/hi/from-clause-subquery-optimization.html
हालांकि, मुझे यकीन नहीं है कि MySQL ऑप्टिमाइज़र उन इंडेक्स का फिर से उपयोग करेगा जो पहले से मौजूद हैं जब यह "व्युत्पन्न तालिका में इंडेक्स जोड़ता है"
निम्नलिखित प्रश्न पर विचार करें:
चुनें * t1JOIN से (चुनें * t2 से) AS व्युत्पन्न_t2 ON t1.f1=व्युत्पन्न_t2.f1;
दस्तावेज़ीकरण कहता है:"ऑप्टिमाइज़र व्युत्पन्न_t2 से कॉलम f1 पर एक इंडेक्स बनाता है यदि ऐसा करने से न्यूनतम लागत निष्पादन योजना के लिए रेफरी एक्सेस के उपयोग की अनुमति मिल जाएगी।"
ठीक है, यह बहुत अच्छा है, लेकिन क्या ऑप्टिमाइज़र t2 से अनुक्रमणिका का पुन:उपयोग करता है? दूसरे शब्दों में, क्या होगा यदि t2.f1 के लिए कोई अनुक्रमणिका मौजूद हो? क्या इस अनुक्रमणिका का पुन:उपयोग किया जाता है, या क्या अनुकूलक इस अनुक्रमणिका को व्युत्पन्न तालिका के लिए पुन:बनाता है? कौन जानता है?
संपादित करें: MySQL 5.6 तक का सबसे अच्छा समाधान एक अस्थायी तालिका बनाना, उस तालिका पर एक अनुक्रमणिका बनाना और फिर अस्थायी तालिका पर चयन क्वेरी चलाना है।