2010-09-24 16 views
6

मुझे SQL सर्वर और asp.net का उपयोग कर डेटाबेस में डेटा डालने या अपडेट करने का सबसे अच्छा तरीका खोजने की आवश्यकता है। यह एक मानक परिदृश्य है यदि डेटा मौजूद है तो इसे अद्यतन किया गया है यदि इसे डाला नहीं गया है। मुझे पता है कि इसके बारे में यहां कई विषय हैं लेकिन किसी ने मुझे जवाब देने की आवश्यकता नहीं है।एसक्यूएल सर्वर थोक डालने/अद्यतन बनाम मेरिज डालने या अद्यतन परिदृश्य

तो मेरी समस्या यह है कि जब आप 5k - 10k पंक्तियों को अपडेट/डालें लेकिन 50k और अधिक के साथ क्या कोई समस्या नहीं है तो वास्तव में कोई समस्या नहीं है।

मेरा पहला विचार एसक्यूएल सर्वर 2008 मेरजे कमांड का उपयोग करना था, लेकिन मेरे पास कुछ प्रदर्शन विचार है यदि यह 50k + पंक्तियां होगी। साथ ही मुझे नहीं पता कि मैं प्राथमिक आईडी कुंजी (int) पर नहीं बल्कि तालिका में अन्य अनूठी कुंजी पर आधारित डेटा को मार्ज कर सकता हूं। (एक उत्पाद धारावाहिक संख्या सटीक होना जो समय में नहीं बदलेगा)।

मेरा दूसरा विचार सबसे पहले सभी उत्पाद धारावाहिकों को प्राप्त करना था, फिर उसके साथ नए डेटा धारावाहिकों की तुलना करें और डेटा को अद्यतन करने के लिए डेटा में विभाजित करें और फिर डेटा को एक थोक डालने और एक थोक अद्यतन करें।

मुझे नहीं पता कि कौन सा बेहतर होगा, मेरजे के साथ मुझे नहीं पता कि प्रदर्शन क्या होगा और यह केवल एसक्यूएल सर्वर 2008 द्वारा समर्थित है, लेकिन यह काफी सरल दिखता है, दूसरे विकल्प की आवश्यकता नहीं है एसक्यूएल 2008, बैचों को तेजी से होना चाहिए, लेकिन पहले सभी धारावाहिकों का चयन करना और उनके आधार पर विभाजित कुछ प्रदर्शन दंड हो सकता है।

क्या राय है, क्या चुनना है?

+0

क्या आप 2008 में अपग्रेड करने का निर्णय ले रहे हैं या आप एक ऐप वितरित कर रहे हैं जिसे SQL सर्वर के एकाधिक संस्करणों पर चलाने की आवश्यकता हो सकती है? क्योंकि यदि आपके पास पहले से ही है, तो आप प्रदर्शन के लिए मर्ज का परीक्षण करने में सक्षम होना चाहिए। – JeffO

+0

ये, मुझे मार्ज का उपयोग करने के लिए अपग्रेड करना होगा, यह कोई समस्या नहीं है, लेकिन यदि प्रदर्शन में मार्ज खराब है तो मुझे नहीं पता कि यह इसके लायक है। – Programista

उत्तर

4

मर्ज performace तरह से बेहतर है क्योंकि "मर्ज बयान का सबसे महत्वपूर्ण लाभ में से एक यह सभी डेटा पढ़ सकते हैं और केवल एक बार संसाधित किया जाता है कि"

आप एक प्राथमिक कुंजी की आवश्यकता नहीं है, आप एक या अधिक क्षेत्रों पर शामिल हो सकते हैं क्या आपके रिकॉर्ड अद्वितीय बनाता है

+0

मुझे यह नहीं मिला। –

+0

चुड़ैल भाग जो आपको नहीं मिलता है? – Ivo

+0

कोई थोक विलय नहीं है। थोक सम्मिलन और अद्यतन संदर्भ में यह 'बेहतर तरीका' कैसे हो सकता है? –

2

सीरियल नंबर पर विलय करने में कोई समस्या नहीं होनी चाहिए जैसा आपने वर्णन किया है। MERGE का उपयोग करते समय आप Microsoft की अनुशंसित सर्वोत्तम प्रथाओं के लिए Optimizing MERGE Statement Performance पढ़ना चाह सकते हैं।

संबंधित मुद्दे