MySQL

วิธีลบข้อมูลที่ซ้ำกันออกจากตารางสำหรับระบบฐานข้อมูล MySQL (How to delete duplicate records in a MySQL database)

คุณอาจจะเคยพบกับปัญหาที่ว่าข้อมูลในตารางนั้นมีข้อมูลซ้ำ ๆ วันนี้ผมก็พบเข้ากับตัวเอง ด้วยเหตุที่ว่าวันนี้เว็บของลูกค้าผมซึ่งสร้างด้วย Drupal ไม่สามารถเข้าไปดูในหน้าของ Organic Subgroup Module ได้เพราะว่าเกิด time out ทุกครั้งที่เข้าไปดูหน้านี้ ผมจึงคิดว่าปัญหาน่าจะอยู่จากระบบฐานข้อมูล ของ Organic Subgroup Module โดยข้อมูลของ Module นี้เก็บอยู่ในตารางเพียงตารางเดียวที่ชื่อว่า "og_ancestry" ซึ่งโครงสร้างข้อมูลในตารางนี้จะมีลักษณะเป็น Tree แน่นอนผมคิดว่าปัญหาน่าจะมาจากการที่มีการอ้างอิงของข้อมูล (reference) ที่ไม่ถูกต้องจนเกิดการอ้างอิงแบบวงวน (circular reference) ซึ่งทำให้ function ที่ query ข้อมูลในตารางนี้แบบ recursive นั้นทำงานไม่รู้จบ จึงเกิด time out ขึ้น ดังนั้นจึงลอง query ข้อมูลในตารางนี้ดู ผมก็พบว่าในตาราง "og_ancestry" นั้นมีข้อมูลซ้ำๆ กันเป็นจำนวนมาก เจองี้เข้าก็อึ้งสิครับ แล้วอย่างนี้ผมจะหาได้หรือเปล่าว่าข้อมูลอันไหนที่ทำให้เกิด loop? ดังนั้นผมจึงควรลบข้อมูลที่ซ้ำๆกันออกไปก่อนเพื่อให้ง่ายต่อการวิเศราะห์ข้อมูล แล้ววิธีการลบข้อมูลที่ซ้ำ ๆ กันล่ะจะทำได้อย่างไร?...

ญาณรักข์ วรรณสาย
Syndicate content