我有一个非常复杂的SELECT,它使用id填充临时表,基于此我需要创建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个键的行?
答案 0 :(得分:0)
您可以先删除input()
并使用CONCAT
代替子查询,尝试以下内容:
JOIN