असल में आप उस क्वेरी को ऑप्टिमाइज़ नहीं कर सकते।
आप परिकलित मान का उपयोग करके परिणाम को सॉर्ट कर रहे हैं, इसलिए आप किसी अनुक्रमणिका का उपयोग नहीं कर सकते हैं। अगर आप explain
. का इस्तेमाल करते हैं आप देख सकते हैं कि आपकी क्वेरी को कैसे निष्पादित किया जा रहा है, और using temporary
extra
. में मौजूद रहेगा कॉलम, जिसका अर्थ है कि आपकी क्वेरी का सारा डेटा एक अस्थायी टेबल पर संग्रहीत किया जा रहा है जिसमें ऑर्डरिंग की जाती है।
इससे कोई फर्क नहीं पड़ता कि आप केवल क्वेरी में पहले 50 मैच चाहते हैं, इसे पहले सभी डेटा प्राप्त करना है, इसे एक अस्थायी तालिका में डंप करना है, उस तालिका में परिणाम को सॉर्ट करना है और फिर आपको पहले 50 मैचों में वापस करना है।पी>
जैसा कि आप मान सकते हैं, यह एक समय और स्मृति लेने वाला ऑपरेशन है।
तो आपके लिए सबसे अच्छा विकल्प है कि आप जितनी जल्दी हो सके सभी पंक्तियों को प्राप्त करने के लिए तालिका में एक अनुक्रमणिका रखें और फिर उन्हें php
के साथ संसाधित करें। आपको आवश्यक डेटा प्राप्त करने के लिए।
वैसे, MySQL ऑप्टिमाइज़ेशन गाइड पर एक नज़र डालें। ।