ฉันสงสัยว่าวิธีที่มีประสิทธิภาพมากที่สุดคือการลบจำนวนแถวขนาดใหญ่ออกจาก PostgreSQL กระบวนการนี้จะเป็นส่วนหนึ่งของงานที่เกิดซ้ำทุกวันเพื่อนำเข้าข้อมูลจำนวนมาก (ส่วนที่แทรก + ลบ) ลงในตาราง อาจมีหลายพันแถวที่อาจลบเป็นล้านแถว
ฉันมีไฟล์ของคีย์หลักหนึ่งรายการต่อบรรทัด ตัวเลือกสองตัวที่ฉันคิดว่ามีอยู่ตามลำดับด้านล่าง แต่ฉันไม่ทราบ / เข้าใจ internals ของ PostgreSQL มากพอที่จะทำการตัดสินใจอย่างชาญฉลาดซึ่งจะดีที่สุด
- ดำเนินการ
DELETE
ค้นหาสำหรับแต่ละแถวในไฟล์โดยใช้WHERE
คีย์หลักอย่างง่าย(หรือจัดกลุ่มการลบเป็นกลุ่มn
โดยใช้ส่วนIN()
คำสั่ง) - นำเข้าคีย์หลักเข้าสู่ตารางชั่วคราวโดยใช้
COPY
คำสั่งแล้วลบออกจากตารางหลักโดยใช้การเข้าร่วม
ข้อเสนอแนะใด ๆ จะได้รับการชื่นชมมาก!