【问题标题】:How do you handle range-date selection in postgresql?您如何处理 postgresql 中的范围日期选择?
【发布时间】:2013-06-27 08:07:22
【问题描述】:

我有一个包含数十万行的表,我必须选择在特定日期范围内创建的行,这可能是唯一的“where”子句。是否有任何可接受的方法来提高查询性能? 如果这个 'date_created' 字段在所有插入的行中总是增加,我是否需要每天(或更频繁地)对 b-tree 索引进行表聚类?

【问题讨论】:

  • 您是否在 date_created 上添加了索引?

标签: sql performance postgresql query-performance


【解决方案1】:

这是对您要过滤的日期列进行分区的经典案例。

文档更详细地描述了该过程,但总结如下:

  • 创建一个从当前表继承其结构的子表
  • 创建一个检查约束,限制可以存储在子表中的日期范围
  • 要么插入“当前”分区,然后根据需要重命名它,要么在父表上设置触发器以将插入的行推送到相关分区

只有在您指定的日期范围内的分区才会在查询执行期间被扫描 - 具有显着的性能提升。

【讨论】:

    猜你喜欢
    • 2012-06-12
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多