首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL选择的速度是否受到表上太多索引的不利影响?

PostgreSQL选择的速度是否受到表上太多索引的不利影响?
EN

Database Administration用户
提问于 2012-10-04 19:39:49
回答 2查看 1.6K关注 0票数 3

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

我有一个很大的表,大约有100列和10亿行,而且经常需要在许多不同的字段中进行大量的搜索。

如果我添加许多索引(可能是10个唯一的列索引和5-7个三列索引),那么PostgreSQL表的性能会下降吗?

编辑:随着性能的下降,我指的是SELECT性能;数据库每月只更新一次,所以UPDATEINSERT速度不是问题。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2012-10-04 20:01:33

不,查询性能不会受到很大影响,或者不会受到很大影响。索引在DML语句(和TRUNCATE)上进行更新,而在执行查询时可以使用索引,也可以不使用索引。

是否使用的决定是由规划师决定的。有了很多索引,我可以想象规划者花费更多的时间来选择可用的索引,但我希望差异很小。(通常情况下,规划比检索行更快。)

注意,通常几个索引会加速许多不同的查询。如果对许多列进行筛选,则可能不会出现这种情况。

还要注意的是,在很多情况下(而且不知道表的定义,就无法确定您的情况是否属于“大部分”),有这么多列反映了模式设计的不太理想。

票数 6
EN

Database Administration用户

发布于 2012-10-05 03:07:41

通常,您必须记住的是,在PostgreSQL中,索引扫描通常并不十分昂贵,但是与其他数据库相比,顺序扫描相对便宜(MySQL/InnoDB就是一个很好的例子)。所以,你不一定要索引所有的东西开始。

一般来说,我不认为过多的索引通常会影响select性能,但它们会影响insert和update性能。正如rfusca在他的评论中指出的那样,规划者有选择错误指数的危险。我还会认为,如果您有大量的索引,它可能会影响有效的缓存,但在很少更新的情况下,这可能不是一个值得关注的问题。

典型的建议仍然是好的:需要时添加索引,需要时才添加索引。但总体来说,在您的情况下,过多的索引不会损害select的性能,这是很好的。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/25449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档