在 PostgreSQL 上查询分区 table

Query on partitioned table on PostgreSQL

我有一个按年份划分的 table。 使用此查询:

select *
from myTable
where year between '2018' and '2020'

查询计划不错,只用了2018,2019,2020个分区

但是对于这个查询

select *
from myTable
where year between '2018' and extract(year from now())::text

分区2021和2022出现在查询计划中,为什么?

在 PostgreSQL v10 中,分区修剪(删除不需要的分区)只能在查询计划时发生,但那时 extract(year from now())::text 的值是未知的.

如果您使用 PostgreSQL v11 或更高版本,您的查询应该按预期执行。