1

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

4

1 回答 1

1

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

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

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

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

于 2013-06-27T18:18:53.623 回答