1
เหตุใด DELETE จึงช้ากว่า SELECT มากแล้วจึงลบตาม id
ฉันมีตาราง InnoDB ที่ค่อนข้างยุ่ง (200,000 แถวฉันเดาได้ว่ามีหลายสิบข้อความค้นหาต่อวินาที) เนื่องจากข้อผิดพลาดฉันได้รับ 14 แถวที่มีที่อยู่อีเมลไม่ถูกต้อง (เหมือนกัน) และต้องการลบทิ้ง ฉันลองDELETE FROM table WHERE email='invalid address'และได้รับ "เกินเวลารอการล็อค" หลังจากนั้นประมาณ 50 วินาที สิ่งนี้ไม่น่าประหลาดใจนักเนื่องจากคอลัมน์แถวไม่ได้จัดทำดัชนี อย่างไรก็ตามฉันทำSELECT id FROM table WHERE email='invalid address'และใช้เวลา 1.25 วินาที วิ่งDELETE FROM table WHERE id in (...)คัดลอกรหัสจากผลลัพธ์ SELECT ใช้เวลา 0.02 วินาที เกิดอะไรขึ้น? ใครสามารถอธิบายได้ว่าเหตุใด DELETE ที่มีเงื่อนไขจึงช้าลงจนหมดเวลา แต่การเลือก SELECT จากนั้นการลบด้วย id นั้นเร็วมาก …