[英]Optimizing a MySQL Subselect Update
我很难让此更新在合理的时间内运行。 注意-events_copy是事件的副本,因为我无法更新正在查询的表。
update events
set dummy = 1
where event_id in
(select event_id
from events_copy
join qualifiers using (event_id)
where type = 10);
我认为这可能是“从...创建表x”的替代方法,但是group by花费的时间太长。
select
events.*,
if(type = 10, 1, 0)
from events
left join qualifiers using (event_id)
group by event_id;
在更新中使用JOIN
而不是子查询:
UPDATE events a
INNER JOIN
(
SELECT DISTINCT event_id
FROM events_copy
INNER JOIN qualifiers USING (event_id)
WHERE type = 10
) b ON a.event_id = b.event_id
SET a.dummy = 1
之所以变慢,是因为子查询正在为events
表中的每一行执行并执行联接。 而是,子选择将执行一次。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.