首页 > 解决方案 > postgresql 中有没有办法在选择中使用动态表分区名称?

问题描述

出于性能原因,我将非常大的表按日期划分为四分之一块。我想编写使用动态分区名称的 sql 查询,根据哪个是最新的。有什么办法可以写这个吗?

例子:

分区名称如下所示:

schema.table_2020_q4
schema.table_2020_q3
schema.table_2020_q2
schema.table_2020_q1
schema.table_2019_q4
schema.table_2019_q3
...

今天是 2020-07-23 = 2020 Q3,所以我的 sql 会是这样的:

select * from schema.table_2020_q3

当应用程序将在 2020 年 10 月 1 日运行此查询时,它需要是:

select * from schema.table_2020_q4

谢谢

标签: postgresql

解决方案


您的表按该日期编制索引,因此将日期作为WHERE表达式的一部分(以您用于分区的相同格式)并且数据库应该自动执行此操作。


推荐阅读