विकल्प:
-
अपनी संग्रहीत कार्यविधि परिभाषा/तर्क के भीतर छँटाई शामिल करें। यदि आपका कॉलिंग एसक्यूएल आपकी संग्रहीत प्रक्रिया के भीतर चयन करता है तो वहां क्रमबद्ध करें और सीमित करें . - इसका मतलब है कि आप केवल उनका सहारा लेने के लिए संग्रहीत प्रक्रिया में 10,000 पंक्तियों का उत्पादन नहीं करेंगे। साथ ही, यदि तालिका में अनुक्रमणिका है तो SQL चयन के भीतर मूल सॉर्ट बहुत तेज़ हो सकता है।
-
सत्यापित करें कि आपकी तालिका में अनुक्रमण का उपयोग किया गया है। - तालिका पर चयन करते समय अनुक्रमणिका आपके प्रकारों को तेज़ी से निष्पादित करने का कारण बनेगी।
कृपया हमें फ़ंक्शन परिभाषा प्रदान करें, अतिरिक्त रूप से आपकी सहायता करना आसान होगा।
अंत में, अपने ऑर्डर को बाद में करने के बजाय सीधे अपने फ़ंक्शन के भीतर ले जाने और सीमित करने का प्रयास करें। आपका फ़ंक्शन 10 परिणामों को सीधे क्रमबद्ध और तैयार कर सकता है। यदि आप चाहते हैं, तो दो कार्य करें - एक जो पूर्ण परिणाम देता है और एक जो उन्हें सीमित और क्रमबद्ध करता है।
अपडेट करें:
आपके फ़ंक्शन को देखने के बाद यह स्पष्ट हो जाता है कि आप एक परिकलित मूल्य से ऑर्डर करने का प्रयास कर रहे हैं। परिकलित मानों के आधार पर ऑर्डर करना बेहद धीमा है जैसा कि इसमें भी बताया गया है:
मैं यह सोचने की कोशिश कर रहा हूं कि आप अपने परिणामों के अंतिम क्रम को तेज करने के लिए col1 या col2 के आधार पर अपने डेटा को "प्री-प्रोसेस/ऑर्डर" कैसे कर सकते हैं। यदि col1 और col2 तालिका के स्तंभ हैं, और funResult एक गणितीय कार्य है जिसे रेखांकन किया जा सकता है, तो दोनों में से किसी एक का फ़ंक्शन वापसी मान पर अधिक प्रभाव पड़ता है....
अंत में, यदि col1 और col2 myTable के कॉलम हैं, तो आपको संग्रहीत फ़ंक्शन का उपयोग करने की आवश्यकता नहीं है, लेकिन इसके साथ क्वेरी कर सकते हैं, लेकिन इससे कोई बड़ा फर्क नहीं पड़ेगा...आपकी मुख्य समस्या एक परिकलित फ़ंक्शन द्वारा ऑर्डर कर रही है:
SELECT rowId, ((col1-INPUT_CONST)*2)+(col2*3) AS funResult
FROM myTable
ORDER BY funResult DESC
LIMIT 10
अपडेट 2:
छँटाई की समस्या के लिए खुदाई के बाद दूरी की गणना की गई, मैंने पाया कि यह नीचे दिए गए लिंक पर बहुत कुशलता से पूछा और हल किया गया है। एक परिकलित मूल्य के आधार पर छँटाई के संबंध में, एक परिकलित मूल्य के आधार पर आपकी छँटाई के रूप में यह स्वाभाविक रूप से धीमा है। अतिरिक्त सहायता के लिए निम्नलिखित दो लिंक देखें:
- http://www.mooreds.com/wordpress/archives/547 - "mysql क्वेरी में दूरी गणना का अनुकूलन"
- सबसे तेज़ तरीका दो अक्षांश/लंबे बिंदुओं के बीच की दूरी का पता लगाने के लिए .
आखिरकार, आपके उत्तर के सबसे करीब यह है: https://stackoverflow.com/a/4180065/1688441