gpt4 book ai didi

mysql - 删除查询优化

转载 作者:行者123 更新时间:2023-11-29 16:02:35 25 4
gpt4 key购买 nike

我有一个删除查询,它可以很好地处理少量的行。但现在大约有 80K 行,由于“超时”而失败

我的两个表是这样的:

TableA
------

| Column | type |
|------------|------------|
| link_id | bigint(40) |
| product_id | int(10) |
| parent_id | int(10) |

Table B
-------

| Column | type |
|-----------|---------|
| id | int(11) |
| parent_id | int(11) |
| child_id | int(11) |

我执行类似的查询来进行删除

DELETE FROM TABLEA
WHERE link_id IN (
SELECT link_id FROM (
SELECT link_id, parent_id, product_id FROM TABLEA
UNION ALL
SELECT id, parent_id, child_id FROM TABLEB
) tbl
GROUP BY parent_id, product_id
HAVING count(*) = 1
ORDER BY parent_id
) ;

但谁不是最优化的。

目标是从表 A 中删除表 B 中不存在的所有记录对于“parent_id/child_id”这对夫妇。

在表 A 中,列“product_id”是“child_id”。

谢谢

最佳答案

解决这个问题的一种方法

DELETE A  FROM TABLEA A
INNER JOIN
( SELECT link_id FROM
(
SELECT link_id, parent_id, product_id FROM TABLEA
UNION ALL
SELECT id, parent_id, child_id FROM TABLEB
) tbl
GROUP BY parent_id, product_id
HAVING count(*) = 1)B
ON A.link_id=B.link_id
where A.link_id is not null;

关于mysql - 删除查询优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56053927/

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