用JOIN和LIMIT替代UPDATE

时间:2014-08-28 13:38:50

标签: mysql

我知道在MySQL中无法使用JOIN和LIMIT执行UPDATE。

问题是我似乎无法找到替代方案,并且模仿LIMIT行为是我解决超时问题的唯一方法......

我想解决的问题:

我有一个巨大的表(timeseriesprevisions),我需要执行一个看起来像这样的维护操作:

UPDATE timeseriesprevisions t1
JOIN datasets d1 ON t1.dataset_SID=d1.SID
JOIN datasets d2 ON d1.execution_SID=d2.execution_SID
SET t1.dataset_SID=d2.SID
WHERE t1.sensor_SID={1} AND d1.app_SID=349 AND d2.app_SID={2};

说明:在给定sensor_SID的巨型表timeseriesprevisions(仅包含字段dataset_SIDsensor_SID)中,替换所有dataset_SID我们将通过2个JOIN找到另一个。 {1}和{2}是id。

这会在设置结果之前抛出超时异常。

我解决此问题的方法通常是使用LIMIT继续插入/更新,直到"受影响的行"是零。这就是为什么我会对UPDATES中JOIN-LIMIT问题的替代方案感兴趣。我对目前为止找到的替代方案不满意,包括使用" IN(SELECT ..."(这会使查询方式太慢)。

0 个答案:

没有答案