ฉันได้รับฐานข้อมูลและต้องการทำความสะอาดและเร่งความเร็ว ฉันมีตารางที่มีแถว 30,000,000 แถวซึ่งส่วนใหญ่เป็นข้อมูลขยะที่แทรกเนื่องจากข้อผิดพลาดในนามของโปรแกรมเมอร์ของเรา ก่อนที่ฉันจะเพิ่มดัชนีใหม่ที่ได้รับการปรับปรุงให้ดีขึ้นฉันจะแปลงตารางจาก MyISAM เป็น InnoDB และฉันต้องการลบแถวจำนวนมากที่มีข้อมูลขยะ
ฐานข้อมูลคือ MySQL 5.0 และฉันมีสิทธิ์เข้าถึงรูทไปยังเซิร์ฟเวอร์ ฉันใช้งานคำสั่งเหล่านี้เป็นครั้งแรกผ่านทาง Adminer จากนั้น phpMyAdmin ทั้งคู่ก็มีผลลัพธ์เหมือนกัน
คำสั่งที่ฉันใช้คือ
DELETE
FROM `tablename`
WHERE `columnname` LIKE '-%'
-
เป็นหลักอะไรลบในคอลัมน์นี้ที่เริ่มต้นด้วยเส้นประ
มันใช้เวลาประมาณ 3-5 นาทีและเมื่อฉันดูรายการกระบวนการมันก็หายไป
จากนั้นฉันก็วิ่ง
SELECT *
FROM `tablename`
WHERE `columnname` LIKE '-%'
และจะส่งคืนแถวนับล้าน
ทำไมคำสั่งลบของฉันจึงไม่เสร็จ
PS, ฉันรู้ว่า MySQL 5.0 ล้าสมัยแล้วอย่างไร ฉันกำลังทำงานเกี่ยวกับการย้ายฐานข้อมูลไปยัง MySQL 5.6 w InnoDB (อาจเป็น MariaDB 10 w XtraDB) แต่จนกว่าจะเกิดเหตุการณ์นี้ขึ้นฉันกำลังหาคำตอบด้วย DB ตามที่เป็นอยู่
-
แก้ไขลบออกดูคำตอบของฉัน
WHERE
นี้เป็นเพราะความต้องการที่จะข้ามแถวมากขึ้นและมากขึ้นที่ไม่ตรงกับ