В PostgreSQL у меня есть запрос, подобный следующему, который удалит 250 тысяч строк из таблицы строк длиной 1 метр:
DELETE FROM table WHERE key = 'needle';
Выполнение запроса занимает более часа, и в течение этого времени затронутые строки блокируются для записи. Это не очень хорошо, потому что это означает, что многие запросы на обновление должны ждать завершения большого запроса на удаление (а затем они потерпят неудачу, поскольку строки исчезли из-под них, но это нормально). Мне нужен способ разбить этот большой запрос на несколько частей, чтобы они вызывали как можно меньше помех для запросов на обновление. Например, если запрос на удаление может быть разбит на куски, каждый из которых содержит 1000 строк, то другим запросам на обновление самое большее придется ждать запроса на удаление, включающего 1000 строк.
DELETE FROM table WHERE key = 'needle' LIMIT 10000;
Этот запрос будет работать хорошо, но, увы, его нет в postgres.