Friday 15 March 2013

SQL (Server) Update performance -


मेरा सीमित एसक्यूएल ज्ञान इस पोस्ट को प्रेरित करता है!

मेरे पास एक संग्रहीत कार्यविधि है जो अपडेट की एक श्रृंखला चलाती है ।
6 अपडेट स्टेटमेंट हैं, जो एक बड़ी अद्यतन कथन में बहुत अच्छी तरह से मसला हो सकता है, लेकिन मुझे नहीं पता कि प्रदर्शन के लिए इसका क्या मतलब होगा।

तालिका मूल बातें: 6 टेबल हिट हैं जिनमें से 3 के बारे में 5000 से अधिक रिकॉर्ड नहीं होंगे, जिनमें से 3 अनिश्चित काल तक (वर्तमान में लगभग 1-2 मिलियन रिकॉर्ड, ठीक से अनुक्रमित, आदि) बढ़ेगी। सभी तालिकाओं में शामिल होने और 6 बड़े अद्यतनों को बनाते हुए एक बड़े पैमाने पर अद्यतन कथन करने के लिए क्या कोई गति लाभ है?

मैं इसे करने का सबसे कारगर तरीका तलाश रहा हूं, भले ही वह दूसरी बार बंद हो।

धन्यवाद।

संपादित करें:

सभी के लिए मेरी क्षमायाचना मैं केवल एक टेबल को अद्यतन कर रहा हूं, लेकिन एक तालिका को अपडेट करने के लिए सभी 6 से डेटा की पुष्टि कर रहा हूं। (यानी यह देखने के लिए जांच रहा है कि क्या टेबल 2 कोरम वेल्यू रिक्त है तो तालिका 1 में "त्रुटि" के रूप में रिकार्ड ध्वजांकित करें)

< P> यदि उन्हें जोड़ना संभव है, तो हाँ, आपको उन्हें जोड़ना चाहिए।

यदि आप एक मेज से एक से अधिक कॉलम अपडेट कर रहे हैं, तो उन्हें इस तरह संयोजित करें:

  अद्यतन करें mytable SET foo = bar, fizz = buzz, whiz = bang WHERE zing & gt; 2081  

के बजाय

  अद्यतन करें mytable SET foo = bar WHERE zing & gt; 2081 अपडेट करें mytable SET fizz = buzz जहां ज़िंग & gt; 2081 अपडेट करें mytable SET whiz = bang WHERE zing & gt; 2081  

यह लगभग 3x जैसा कुशल है, क्योंकि इसे केवल एक बार तालिका में जाना पड़ता है।

विभिन्न तालिकाओं में फ़ील्ड के अपडेट को अलग से करना होगा ( के रूप में सेड रौक्स का उल्लेख किया गया है, इसकी भी संभव उन्हें एक ही समय में करने के लिए नहीं)।

यहां तक ​​कि अगर आप जटिल परिसर में उपयोग कर रहे हैं, तो केवल एक मेज पर अद्यतन किया जा सकता है पहर। कुछ ऐसा है:

  खाता इतिहास अद्यतन SET LastPurchaseDate = i.PurchaseDate खाते से एक INNER खाते खाता इतिहास पर एक .AccountID = एच। एसीसीआईटीआई INNER में शामिल IO.AccountID = a.AccountID पर शामिल करें जहाँ मैं । ख़रीदना & gt; '2009-11-30'  

केवल खाता इतिहास को यहाँ बदला जा रहा है, भले ही स्रोत डेटा को किसी शामिल होने के द्वारा एक्सेस किया जाता है।


No comments:

Post a Comment