每个表的索引数

时间:2013-08-29 09:56:23

标签: postgresql indexing

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

  2. 您查询的索引越多,查询速度越慢吗?如果我有几十个数百甚至几千个索引,它会有所不同吗?我在阅读postgres'partial indexes上的文档之后问我,这让我想到了一些非常有创意的解决方案,但这些解决方案需要很多索引。

1 个答案:

答案 0 :(得分:6)

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

  1. 空间消耗,当然,部分指数会降低。
  2. 查询优化,通过使优化计划的选择更加复杂。
  3. 表修改时间,通过插入新行或删除或修改当前行时修改索引的附加工作。
  4. 默认情况下,我倾向于对索引进行重视:

    1. 空间通常很便宜
    2. 带有绑定变量的查询只需要优化一次
    3. 通常必须比修改行更频繁地找到行,因此设计系统以便有效地查找行通常比减少修改它们的开销更为重要。
    4. 缺少必需索引的影响可能非常高,即使偶尔只需要索引。
    5. 我参与了一个Oracle系统,其中非规范化的报告表有超过200列,其中100个已编入索引,这不是问题。部分索引本来不错,但Oracle不直接支持它们(你使用了一个相当不方便的CASE hack)。

      因此,只要您了解其优缺点,我就会继续发挥创意,并且最好还衡量您对系统的影响。