PostgreSQL の DELETE では LIMIT が使えない2025年03月06日 14時06分40秒

PostgreSQL の DELETE 構文は LIMIT が指定できない。SELECT 句で削除対象を探しながら少しずつ消していく迂回策を取るしかない。

どのデータベースもほぼ同じだとは思うが、読み出しのみの SELECT はとても高速でも、書き込みの起こる DELETE はとっても遅いことが多い。SELECT でレコードを取得出来るが、DELETE がトランズアクションの時間制限内に終わらい為に、データベースからデータが消せない事態に陥ったことがある。

細かい追加の SELECT 句の弊害と対処方法などについては How to Use LIMIT in Postgres Delete in two roundabout ways で詳しく解説されている。。 随分前の事になるが、メモを見つけたので。