2012-09-28 28 views
6

मैं एक बहुत ही सरल प्रक्रिया (थोड़ी देर के पाश) MySQL में बनाया:MySQL बहुत धीमी गति से पाश

BEGIN 

    DECLARE start INT; 
    DECLARE ending INT; 

    SET start = 1; 
    SET ending = 4000000; 

    WHILE (start <= ending) DO 
     SET start = start + 1; 
    END WHILE; 
END 

यह लेता है ~ एक डुअल कोर मशीन (100% पर प्रत्येक कोर) पर 26 सेकंड और मुझे नहीं पता समझे क्यों।

क्या आप मुझे जवाब दे सकते हैं?

+1

एसक्यूएल कोई प्रोग्रामिंग भाषा नहीं है जहां लूपिंग बहुत तेज है। –

+0

@juergen डी: यह "बहुत तेज़ नहीं है", यह नरक की तरह धीमा है ... यह ** 8-9 हजार ** लूप के औसत से धीमा धीमा है। – recis

उत्तर

3

हां, संग्रहीत प्रक्रियाएं अन्य प्रोग्रामिंग भाषाओं जैसे सी # या जावा की तुलना में बहुत धीमी हैं। कम्प्यूटेशनल बुद्धिमान है कि। SQL सर्वर में भी वही कोड धीमा होगा। संभवतः MySQL से तेज़, लेकिन आप अभी भी कुछ सेकंड प्रतीक्षा कर रहे हैं जब तक कि यह पूरी तरह से निष्पादित नहीं हो जाता है। आप प्रोग्रामिंग भाषा में ऐसा करके बेहतर होंगे, जो एक दूसरे के तहत ऐसा कार्य पूरा करता है।

तो दूसरे शब्दों के साथ

:

धीरे संग्रहीत प्रक्रिया प्रदर्शन के कारणों के कारण है कि यह आमतौर पर डेटाबेस में computationally महंगा व्यापार तर्क लागू करने के लिए समझदारी नहीं है में से एक है। नेटवर्क के साथ बाधा नहीं होने के कारण वे एक बार आवेदन परत में डेटा निकालने के लिए बेहतर होते हैं और इसे अपनी पसंद की प्रोग्रामिंग भाषा में संसाधित करते हैं, भले ही वह डेटाबेस में कुछ अतिरिक्त राउंड ट्रिप लेता है।