Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

दो बिंदुओं (लंबी, अक्षांश) के बीच की दूरी की गणना करने के लिए फ़ंक्शन के साथ ऑर्डर का उपयोग करते समय MySQL क्वेरी धीमी

विकल्प:

  1. अपनी संग्रहीत कार्यविधि परिभाषा/तर्क के भीतर छँटाई शामिल करें। यदि आपका कॉलिंग एसक्यूएल आपकी संग्रहीत प्रक्रिया के भीतर चयन करता है तो वहां क्रमबद्ध करें और सीमित करें . - इसका मतलब है कि आप केवल उनका सहारा लेने के लिए संग्रहीत प्रक्रिया में 10,000 पंक्तियों का उत्पादन नहीं करेंगे। साथ ही, यदि तालिका में अनुक्रमणिका है तो SQL चयन के भीतर मूल सॉर्ट बहुत तेज़ हो सकता है।

  2. सत्यापित करें कि आपकी तालिका में अनुक्रमण का उपयोग किया गया है। - तालिका पर चयन करते समय अनुक्रमणिका आपके प्रकारों को तेज़ी से निष्पादित करने का कारण बनेगी।

कृपया हमें फ़ंक्शन परिभाषा प्रदान करें, अतिरिक्त रूप से आपकी सहायता करना आसान होगा।

अंत में, अपने ऑर्डर को बाद में करने के बजाय सीधे अपने फ़ंक्शन के भीतर ले जाने और सीमित करने का प्रयास करें। आपका फ़ंक्शन 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:

छँटाई की समस्या के लिए खुदाई के बाद दूरी की गणना की गई, मैंने पाया कि यह नीचे दिए गए लिंक पर बहुत कुशलता से पूछा और हल किया गया है। एक परिकलित मूल्य के आधार पर छँटाई के संबंध में, एक परिकलित मूल्य के आधार पर आपकी छँटाई के रूप में यह स्वाभाविक रूप से धीमा है। अतिरिक्त सहायता के लिए निम्नलिखित दो लिंक देखें:

आखिरकार, आपके उत्तर के सबसे करीब यह है: https://stackoverflow.com/a/4180065/1688441



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. प्रेस्टो डेटाबेस को MySQL से कैसे कनेक्ट करें

  2. MySQL में क्वेरी कैसे लिख सकते हैं जो एक कॉलम में JSON डेटा को पार्स कर सकते हैं?

  3. MySQL में विशिष्ट मानदंड दिए गए 'अगली' पंक्ति का चयन

  4. PHP का उपयोग कैसे करें शब्द जोड़ी (स्ट्रिंग) सरणी को MySQL में डालें

  5. यह निर्धारित करने के लिए MySQL का उपयोग करें कि क्या आज उपयोगकर्ता का जन्मदिन है