在 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 或更高版本,您的查询应该按预期执行。
我有一个按年份划分的 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 或更高版本,您的查询应该按预期执行。