每个表的索引数

Mar*_*oda 1 postgresql indexing

  1. 根据您的经验,Postresql中每个表的索引数量是否有任何实际限制?从理论上讲,根据文件,没有引用:"每桌最大指数无限制"但是:

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

Dav*_*dge 6

以几种不同的方式存在大量索引的开销:

  1. 空间消耗虽然当然部分指数会降低.
  2. 查询优化,通过使优化计划的选择更具复杂性.
  3. 表修改时间,通过在插入新行时修改索引或删除或修改当前行的附加工作.

默认情况下,我倾向于在索引方面做得很重:

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

我已经开发了一个Oracle系统,其中非规范化的报告表有超过200列,其中有100个被索引,这不是问题.部分索引本来不错,但Oracle不直接支持它们(你使用了一个相当不方便的CASE hack).

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