วิธีการทิ้งโต๊ะขนาดใหญ่โดยมีผลกระทบน้อยที่สุดในการบันทึกการจัดส่ง?
มีตารางที่เกี่ยวข้องกึ่งใหญ่สองตาราง (284,6876,609 แถว - 156,785,176 KB และ 4,2628,162 แถว - 2,212,464 KB) ในฐานข้อมูลบันทึกที่จัดส่งซึ่งจำเป็นต้องล้างหรือทิ้ง ฉันจะทิ้งตารางทั้งสองนี้ในขณะที่ลดผลกระทบในการบันทึกการจัดส่งได้อย่างไร
คำตอบ
หากคุณDROP
เป็นตารางจะทำให้มีการสร้างบันทึกน้อยที่สุดเนื่องจากไม่ได้บังคับให้การรวบรวมขยะเกิดขึ้นในพื้นที่ที่ใช้ในทันทีโดยพื้นฐานแล้วเพียงแค่ลบข้อมูลอ้างอิงออก ในทำนองเดียวกันคุณสามารถบรรลุผลลัพธ์เดียวกันได้ด้วยTRUNCATE
(แม้ว่าฉันคิดว่าบนโต๊ะขนาดใหญ่อาจมีค่าใช้จ่ายมากกว่าDROP
ฉันจะต้องค้นคว้าข้อมูลนี้และอัปเดตคำตอบของฉันตามนั้น)
นี้เป็นบทความที่ดีจริงๆที่รายละเอียดว่าทำไมTRUNCATE
และDROP
การดำเนินงานเป็น seemlessly อย่างรวดเร็วและสร้างบันทึกน้อยที่สุดซึ่งเป็นเนื่องจากคุณสมบัติของ SQL Server ที่เรียกว่ารอการตัดบัญชีลดลง
ไม่ว่าจะด้วยวิธีใดหลีกเลี่ยงDELETE
มิฉะนั้นจะสร้างบันทึกจำนวนมากที่จะต้องจัดส่งและนำไปใช้ซ้ำที่ฐานข้อมูลเป้าหมาย
คำถาม StackOverflowนี้มีคำตอบหลายคำตอบพร้อมข้อมูลที่ดีเกี่ยวกับการนำข้อมูลออกจากตารางขนาดใหญ่อย่างมีประสิทธิภาพ (บางคำถามอาจไม่ได้เกี่ยวข้องกับคำถามของคุณโดยเฉพาะ แต่เหมาะสำหรับการอ้างอิงในอนาคตหรือผู้ใช้รายอื่นที่มีปัญหาคล้ายกัน)