Нет действительно хорошего способа предсказать время выполнения.
Как очень грубое практическое правило, вы можете сравнить стоимость 1 со временем чтения одной 8-килобайтной страницы с диска во время последовательного сканирования. , но это часто будет более чем на порядок.
Чтобы решить основную проблему, попробуйте
DELETE FROM source AS v1
WHERE EXISTS (SELECT 1
FROM source AS v2
WHERE (v1.ent_id, v1.name) = (v2.ent_id, v2.name)
AND v2.id > v1.id);
Проблема с вашим запросом заключается в том, что он должен выполнять дорогое выполнение. отбор для каждого найденного ряда, в то время как мой может выполнить полусоединение. Посмотрите на план выполнения моего запроса.