PostgreSQL中的行安全性策略和分区

时间:2019-05-06 18:08:12

标签: postgresql database-partitioning postgres-10

PostgreSQL 10.6表在字段id上启用了行安全策略。该表具有基于id的多个分区。

在执行选择查询之前,使用SET语句设置了该字段的值。

但是,当运行select查询时,我从解释计划中看到PostgreSQL必须扫描所有分区以找到与使用SET语句设置的值相对应的正确分区。

如果在id子句中传递了WHERE,它将选择正确的分区,而不会扫描所有分区。

是否有一种使行安全策略选择类似于where子句的正确分区的方法?

1 个答案:

答案 0 :(得分:2)

如果您的策略取决于所设置的参数,则可能使用current_setting()来检索它。

由于解析查询时未知该值,因此PostgreSQL v10无法应用分区修剪

根据您的查询,升级到v11可能会有所帮助,因为此版本增加了在查询执行时对分区修剪的支持。