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

TRUNCATE बनाम DELETE FROM के पेशेवरों और विपक्ष

TRUNCATE कोई रोलबैक डेटा उत्पन्न नहीं करता है, जो इसे बहुत तेज़ बनाता है। यह केवल तालिका द्वारा उपयोग किए गए डेटा पृष्ठों को हटा देता है।

हालांकि, यदि आप किसी लेन-देन में हैं और इस डिलीट को "पूर्ववत" करने की क्षमता चाहते हैं, तो आपको DELETE FROM का उपयोग करने की आवश्यकता है , जो रोलबैक करने की क्षमता देता है।

संपादित करें: ध्यान दें कि उपरोक्त SQL सर्वर के लिए गलत है (लेकिन यह Oracle पर लागू होता है)। SQL सर्वर में, यदि आप किसी लेन-देन के अंदर हैं और लेन-देन नहीं किया गया है, तो एक ट्रंकेट ऑपरेशन को रोलबैक करना संभव है। SQL सर्वर के दृष्टिकोण से, DELETE FROM और TRUNCATE के बीच एक महत्वपूर्ण अंतर है यह :"DELETE कथन एक बार में पंक्तियों को हटाता है और प्रत्येक हटाई गई पंक्ति के लिए लेन-देन लॉग में एक प्रविष्टि दर्ज करता है। TRUNCATE TABLE तालिका डेटा को संग्रहीत करने के लिए उपयोग किए गए डेटा पृष्ठों को हटाकर डेटा को हटा देता है और लेनदेन लॉग में केवल पृष्ठ डीललोकेशन को रिकॉर्ड करता है। ।"

दूसरे शब्दों में, TRUNCATE के दौरान कम लॉगिंग होती है क्योंकि लेन-देन लॉग में केवल पेज डीललोकेशन रिकॉर्ड किए जाते हैं, जबकि DELETE FROM प्रत्येक पंक्ति विलोपन को रिकॉर्ड किया जाता है। यही एक कारण है कि TRUNCATE की बिजली बहुत तेज़ है।

उस एमएसडीएन लिंक से भी ध्यान दें कि आप विदेशी कुंजी बाधाओं द्वारा संदर्भित तालिकाओं को छोटा नहीं कर सकते हैं, अनुक्रमित दृश्य में भाग लेते हैं, या लेनदेन संबंधी प्रतिकृति या मर्ज प्रतिकृति का उपयोग करके प्रकाशित होते हैं।

संपादित करें 2: एक अन्य महत्वपूर्ण बिंदु यह है कि TRUNCATE TABLE आपकी पहचान को प्रारंभिक बीज में रीसेट कर देगा, जबकि DELETE FROM जहां से छोड़ा गया था, वहां से बढ़ता रहेगा। संदर्भ:बेन रॉबिन्सन का उत्तर।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल में स्केलर वैल्यूड फंक्शन में केस स्टेटमेंट का उपयोग कैसे करें?

  2. एक तालिका से चयन करना जहां नाम एक चर के रूप में पारित किया जाता है

  3. प्रक्रिया या फ़ंक्शन cdc.fn_cdc_get_all_changes_ के लिए अपर्याप्त संख्या में तर्क दिए गए थे

  4. SQL ट्रिगर DELETE के बजाय नहीं कर सकता है लेकिन ntext, छवि कॉलम के लिए आवश्यक है

  5. SSIS में उपयोगकर्ता चर मानों के आधार पर डेटा प्रवाह में if..else का उपयोग कैसे करें?