यह वास्तव में इस बात पर निर्भर करता है कि डेटा कितना बदल रहा है। बता दें कि इस टेबल में 20 कॉलम हैं। और आपके पास 5 इंडेक्स भी हैं - प्रत्येक एक अंतर पर। स्तंभ।
अब यदि सभी 20 कॉलमों में मान बदल रहे हैं या भले ही 5 कॉलमों में डेटा बदल रहे हैं और ये 5 कॉलम सभी अनुक्रमित हैं, तो आप "हटाना और सम्मिलित करना" से बेहतर हो सकते हैं। लेकिन अगर केवल 2 कॉलम बदल रहे हैं और कह सकते हैं कि ये किसी भी गैर-क्लस्टर इंडेक्स का हिस्सा नहीं हैं, तो आप रिकॉर्ड को "अपडेट" करना बेहतर हो सकते हैं क्योंकि इस मामले में केवल क्लस्टर इंडेक्स अपडेट किया जाएगा (और इंडेक्स नहीं होंगे) अद्यतन किया जा)।
आगे के शोध पर, मैंने पाया कि मेरे द्वारा की गई उपरोक्त टिप्पणी बेमानी है, क्योंकि SQL सर्वर आंतरिक रूप से 2 अलग तंत्र के लिए UPDATE करता है। - एक "इन-प्लेस अपडेट" (यानी मूल पंक्ति में एक कॉलम के मूल्य को नए में बदलकर) या "इन-प्लेस UPDATE" के रूप में (DELETE के बाद INSERT)।
स्थान अपडेट में नियम हैं और यदि संभव हो तो प्रदर्शन किया जाता है। यहाँ पंक्तियाँ एक ही पृष्ठ पर एक ही स्थान पर एक ही स्थान पर बिल्कुल रहती हैं। केवल प्रभावित बाइट्स chnaged हैं। टॉगल में केवल एक रिकॉर्ड होता है (बशर्ते कोई अपडेट ट्रिगर न हो)। अपडेट जगह में होते हैं यदि एक ढेर अद्यतन किया जा रहा है (और पृष्ठ पर पर्याप्त जगह है)। क्लस्टरिंग कुंजी में परिवर्तन होने पर भी अपडेट होते रहते हैं लेकिन पंक्ति को बिल्कुल भी स्थानांतरित करने की आवश्यकता नहीं होती है।
उदाहरण के लिए: यदि आपके पास अंतिम नाम पर एक क्लस्टर इंडेक्स है और आपके नाम हैं: एबल, बेकर, चार्ली अब आप बेकर को बेकर को अपडेट करना चाहते हैं। कोई पंक्तियों को स्थानांतरित नहीं करना है। तो यह जगह ले सकता है। जबकि, यदि आपको Able to Kumar को अपडेट करना है, तो पंक्तियों को स्थानांतरित करना होगा (भले ही वे उसी पृष्ठ पर होंगे)। इस स्थिति में, SQL सर्वर एक DELETE करेगा जिसके बाद एक INSERT होगा।
उपरोक्त को ध्यान में रखते हुए, मैं आपको सुझाव दूंगा कि आप एक सामान्य अद्यतन करें और आंतरिक रूप से कैसे करें के लिए SQL सर्वर को सबसे अच्छा तरीका बताएं।
"UPDATE" इंटर्नल्स के बारे में अधिक जानकारी के लिए या उस SQL सर्वर से संबंधित किसी भी मामले के लिए, Kalen Delaney, Paul Randal's, et al.'s book - SQL Server 2008 Internals देखें ।