我有一个包含数亿行的表,我需要从中删除数据。
现有的索引是最有效的。
但是,我可以使用现有索引通过使用ctid
值查找要删除的行:
DELETE FROM calendar_event WHERE ctid IN
(SELECT ctid FROM calendar_event WHERE user_id = 5 LIMIT 100 FOR UPDATE)
Run Code Online (Sandbox Code Playgroud)
ctid
在这种情况下依赖 的风险是什么?我最糟糕的情况是删除错误的行。
postgresql performance delete concurrency postgresql-performance