gpt4 book ai didi

mysql - 根据选择删除

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

我有一个非常复杂的 SELECT,它用 ids 填充临时表,基于此我需要创建 DELETE 查询。

例如,临时表的行如下所示:

- first_id | second_id | third_id
- 1 | 222 | 342
- 1 | 222 | 343
- 1 | 223 | 551
  • ...

并查询:

DELETE FROM mytable WHERE CONCAT(first_id, 'X', second_id, 'X', third_id) IN (SELECT CONCAT(first_id, 'X', second_id, 'X', third_id) FROM temp_table);

但是这个查询太长了。当我显示PROCESSLIST时,我看到这个查询时间约为4000秒。

所以我的问题是,如何优化 DELETE 查询,根据 select FROM 另一个表从一个表中删除行,并根据 3 个键仅删除行?

最佳答案

您可以首先删除 CONCAT 并使用 JOIN 而不是子查询,尝试如下操作:

DELETE mt FROM mytable mt INNER JOIN temp_table tt ON mt.first_id = tt.first_id AND mt.second_id = tt.second_id AND mt.third_id = tt.third_id

关于mysql - 根据选择删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45305067/

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