2
  1. 根据您的经验,Postresql 中每个表的索引数量是否有实际限制?从理论上讲,根据文档,没有引用:“每个表的最大索引数无限制”但是:

  2. 是不是索引越多查询越慢?如果我有数十个、数百个甚至数千个索引,会有什么不同吗?在我阅读了关于 postgres部分索引的文档后,我问了这个问题,这让我想到了一些非常有创意的解决方案,然而,这些解决方案需要大量索引。

4

1 回答 1

6

以几种不同的方式拥有大量索引会产生开销:

  1. 空间消耗,尽管使用部分索引当然会更低。
  2. 查询优化,通过使优化器计划的选择变得更加复杂。
  3. 表修改时间,通过在插入新行或删除或修改当前行时修改索引的额外工作。

默认情况下,我倾向于对索引进行大量索引:

  1. 空间通常很便宜
  2. 绑定变量的查询只需要优化一次
  3. 行的查找通常比修改的频率要高得多,因此设计系统以有效地查找行通常比减少修改行的开销更重要。
  4. 缺少所需索引的影响可能非常高,即使该索引只是偶尔需要。

我在一个 Oracle 系统上工作过,该系统具有超过 200 列的非规范化报告表,其中 100 列被索引,这不是问题。部分索引本来不错,但 Oracle 不直接支持它们(您使用相当不方便的 CASE hack)。

所以我会继续发挥创意,只要你知道利弊,最好你也会衡量你对系统的影响。

于 2013-08-29T11:51:07.600 回答