เหตุผลหนึ่งที่ทำให้การลบแบบเรียงซ้อน (แทนที่จะทำในรหัส) คือการปรับปรุงประสิทธิภาพ
กรณีที่ 1: ด้วยการลบแบบเรียงซ้อน
DELETE FROM table WHERE SomeDate < 7 years ago;
กรณีที่ 2: ไม่มีการลบแบบเรียงซ้อน
FOR EACH R IN (SELECT FROM table WHERE SomeDate < 7 years ago) LOOP
DELETE FROM ChildTable WHERE tableId = R.tableId;
DELETE FROM table WHERE tableId = R.tableid;
/* More child tables here */
NEXT
ประการที่สองเมื่อคุณเพิ่มในตารางลูกพิเศษที่มีการลบน้ำตกรหัสในกรณีที่ 1 ยังคงทำงาน
ฉันจะใส่เฉพาะในน้ำตกที่ความหมายของความสัมพันธ์คือ "ส่วนหนึ่งของ" มิฉะนั้นคนโง่บางคนจะลบฐานข้อมูลครึ่งหนึ่งเมื่อคุณ:
DELETE FROM CURRENCY WHERE CurrencyCode = 'USD'
sql-server
แท็ก