gpt4 book ai didi

mysql - 错误 : Lock wait timeout exceeded; try restarting transaction/Limit Delete Query with join

转载 作者:行者123 更新时间:2023-11-29 02:51:18 24 4
gpt4 key购买 nike

我的表中有针对image_url”的重复项,现在我只想删除重复项并只保留每个记录吗?

这是我试过的查询:

DELETE t1
FROM
ad_images_copy t1
JOIN ad_images_copy t2 ON t2.image_url = t1.image_url
AND t2.id < t1.id

reference link for remove duplicate rows但它给了我错误

Error : Lock wait timeout exceeded; try restarting transaction

现在我想限制这个查询,因为我有很多记录。

我尝试在最后添加 limit 但它对我不起作用。

DELETE t1
FROM
ad_images_copy t1
JOIN ad_images_copy t2 ON t2.image_url = t1.image_url
AND t2.id < t1.id
limit 100 ;

如果有任何其他方法可以做到这一点,请提供帮助。

最佳答案

要检查的一件事是 image_urlid 在两个表上都有索引。 (可能 id 是主键,所以它会被索引,但你应该检查 image_url 是否被索引。)如果没有,添加索引。

如果是这样,您可以分两步尝试避免锁定。你的行是不可变的吗?如果是,那么您可以使用 SELECT 查询来查找要删除的所有行,然后使用一些批处理的 DELETE 来删除它们。这意味着您最终不会锁定整个表。

这样做是安全的,只要您知道在 SELECTDELETE

关于mysql - 错误 : Lock wait timeout exceeded; try restarting transaction/Limit Delete Query with join,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35315847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com