我们有一个按日期列分区的表。
\n我的一些同事认为这意味着该列被自动索引。在寻找了这方面的证据后,我不相信事实如此。谁是对的?
\n手册https://www.postgresql.org/docs/current/ddl-partitioning.html(第 5.11.2.1 节。示例)说:
\n\n\n在分区表的键列上创建索引,以及您可能需要的任何其他索引。(键索引并不是严格\n必需的,但在大多数情况下它是有帮助的。)这会自动\n在每个分区上\n创建一个匹配的索引,并且您稍后创建或\n附加的任何分区也将具有这样的索引。分区表上声明的索引或\n唯一约束为\xe2\x80\x9cvirtual\xe2\x80\x9d,其方式与分区表相同:实际数据位于各个分区表的子索引中。
\n
这对我来说意味着我们应该创建索引。
\n每个分区大约有 350K 行。由于我们经常按该列上的日期范围查询,每个分区都会有自己的索引吗?还是跨所有分区的一个巨大的?
\n在此列上添加索引会提高还是降低性能?
\n分区列上不会自动建立索引。
如果您进行了列表分区,并且每个列表仅包含一个日期(即每个日期都有自己的分区),那么我认为在该列上建立索引不会有帮助。除了分区已经知道的信息之外,列中没有额外的信息。
如果您按季度或年度进行范围分区,但经常按特定日期进行查询,那么索引可能会很有用,因为它提供了很多额外的特异性。
| 归档时间: |
|
| 查看次数: |
3523 次 |
| 最近记录: |