10

我已经读过,当数据库上有很多索引时,它会严重损害性能,但在 PostgreSQL 文档中我找不到任何关于它的信息。

我有一个非常大的表,有 100 列和 10 亿行,我经常需要在很多不同的领域进行大量搜索。

如果我添加很多索引(可能 10 个唯一列索引和 5 个或 7 个 3 列索引),PostgreSQL 表的性能会下降吗?

编辑:随着性能下降,我的意思是获取行(选择)的性能,数据库将每月更新一次,因此更新和插入时间不是问题。

4

3 回答 3

12

当表的内容被修改时,索引会被维护(即INSERT, )UPDATEDELETE

PostgreSQL 的查询计划器可以决定何时使用索引,何时不需要索引,顺序扫描更佳。

因此,索引过多会损害修改性能,而不是获取。

于 2012-09-27T19:26:52.837 回答
1

每个索引都必须更新,insert并且update涉及这些列。

于 2012-09-27T19:26:39.717 回答
0

我的网站上有一些图表:http: //use-the-index-luke.com/sql/dml

索引是纯粹的冗余。它仅包含也存储在表中的数据。在写操作期间,数据库必须保持这些冗余一致。具体来说,这意味着插入、删除和更新不仅会影响表,还会影响保存受影响数据副本的索引。

章节标题暗示了索引可能产生的影响:

插入——不能直接从索引中受益

Delete — 为 where 子句使用索引

更新——不影响表的所有索引

于 2012-09-28T05:32:36.103 回答