【问题标题】:Should index include a 'constant' column?索引是否应该包含“常量”列?
【发布时间】:2015-06-02 18:25:09
【问题描述】:

我正在我的 postgres 数据库中进行分区。根表类似于 kpis_weekly(date, personid, metric, value),分区表是 kpis_weekly_yyyymmdd,继承自 kpis_weekly 表。 我将子表的主键设置为(personid, metric),因为在同一个分区表中日期总是相同的。

这是正确的做法吗?或者我应该在 (date, personid, metric) 上创建主键,尽管日期在同一个分区表中是“恒定的”。

我们通常在这张表上运行的查询是这样的:

select * 
from kpis_weekly  
where date = '2011-02-20' 
and personid = 50

select * 
from kpis_weekly  
where date = '2011-02-20' 
and metric = 'centrality' 
and personid in ( 50, 82, 10, 14, 22, 36)

【问题讨论】:

  • 非常好的问题。我还没有探讨将第三列添加到该列是单个常量值的 b 树索引的影响。

标签: postgresql indexing partitioning


【解决方案1】:

如果 personid - metric 对是唯一的,那么是的,最好有一个基于这两列的主键。在任何情况下,主表的主键都无法传播到子表,因此在键中包含日期是没有用的。

【讨论】:

  • 创建索引时。考虑将索引的第一个元素列为具有较少差异值的列。如果我理解正确,应该是度量,然后是personid
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-21
  • 2016-11-14
  • 2022-01-13
相关资源
最近更新 更多