我很难让这个更新在合理的时间内运行。注意 - 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来自...”的替代方案,但是这个小组太长了。
select
events.*,
if(type = 10, 1, 0)
from events
left join qualifiers using (event_id)
group by event_id;
答案 0 :(得分:1)
在更新中使用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
表中的每一行执行连接。相反,子选择将执行一次。