Mysql DELETE (with NOT IN subselect)未使用索引并获取错误1205 (HY000):锁定等待超时。
这个错误是由于在执行DELETE语句时,使用了NOT IN子查询,并且该子查询未使用索引导致的。当数据库中的数据量较大时,这种查询方式会导致性能问题,甚至可能出现锁定等待超时的错误。
为了解决这个问题,可以采取以下几种方法:
DELETE FROM table1
WHERE id NOT IN (SELECT id FROM table2)
可以改写为:
DELETE table1
FROM table1
LEFT JOIN table2 ON table1.id = table2.id
WHERE table2.id IS NULL
DELETE FROM table1
WHERE NOT EXISTS (SELECT 1 FROM table2 WHERE table1.id = table2.id)
推荐的腾讯云相关产品:腾讯云数据库 MySQL
腾讯云数据库 MySQL是一种高性能、可扩展的关系型数据库服务,提供了稳定可靠的云端数据库解决方案。它具有自动备份、容灾、监控等功能,支持弹性扩容和自动负载均衡,能够满足各种规模和需求的应用场景。
产品介绍链接地址:腾讯云数据库 MySQL
领取专属 10元无门槛券
手把手带您无忧上云