PostgreSQLでは、次のようなクエリがあり、1mの行テーブルから25万行が削除されます。
DELETE FROM table WHERE key = 'needle';
クエリの実行には1時間以上かかり、その間、影響を受ける行は書き込み用にロックされます。これは、多くの更新クエリが大きな削除クエリが完了するのを待たなければならないことを意味するため、良くありません(その後、行が下から消えたために失敗しますが、それは問題ありません)。この大きなクエリを複数の部分に分割して、更新クエリへの干渉をできるだけ少なくする方法が必要です。たとえば、削除クエリをそれぞれ1000行のチャンクに分割できる場合、他の更新クエリは最大で1000行を含む削除クエリを待機する必要があります。
DELETE FROM table WHERE key = 'needle' LIMIT 10000;
そのクエリはうまく機能しますが、残念ながらpostgresには存在しません。