Есть примерно такой запрос. На таблицах < 100к строк, запрос отлично отрабатывается. Но как только я подсовываю таблицу на 5 миллионов строк, я получаю тайм-ауты, какие либо не ставил.
И даже проблему я вижу, при большом объеме строк, происходит умножение итераций (5 000 000 * 5 000 000 = печаль моего сервера).
Вопрос, как переписать такой запрос? Чтобы можно было детектировать дубли и для дублей установить родителя. Удалять дубли нельзя, дробить тоже.
UPDATE `a[tmp]` AS tt
INNER JOIN (
SELECT
`id`,
`a`,
`b`
FROM `a[tmp]`
) AS tr
ON
tt.`a` = tr.`a`
AND
tt.`b` = tr.`b`
AND
tt.`id` > tr.`id`
SET tt.`type` = 'del', tt.`par_id` = tt.`id` > tr.`id`