BRIN 是否用于删除级联?

Is BRIN used for delete cascade?

我需要一些大表的索引来支持 ON DELETE CASCADE,但是 btree 索引的大小会是个问题。因此,我尝试使用 BRIN,因为性能并不重要。但是,它们似乎从未被使用过,或者至少删除速度与没有索引时一样慢。有人可以确认规划器可以使用 BRIN 索引进行级联删除吗?有没有办法让我检查计划?

使用 auto_explain 和这些设置:

auto_explain.log_min_duration = '0ms'
auto_explain.log_nested_statements=on

您将获得级联删除的计划。

使用此设置,它会发送给您的客户端,您无需从日志文件中挖掘它:

set client_min_messages = log;

可以使用 BRIN 索引。但是,如果 table 不是 suitable 用于 BRIN 索引(行几乎不按键列排序)使用一个实际上不会更快。