【问题标题】:Will CLUSTER cluster the index in PostgreSQL?CLUSTER 会将 PostgreSQL 中的索引聚集在一起吗?
【发布时间】:2020-09-17 08:32:53
【问题描述】:

PostgreSQL 中的 CLUSTER 是否也会以有效的方式在磁盘上安排索引本身?还是这无关紧要?我主要对性能很重要的查询进行仅索引扫描,我想知道集群是否无关紧要。

【问题讨论】:

    标签: postgresql clustered-index


    【解决方案1】:

    CLUSTER 使用索引顺序重写表,但不重写任何索引。

    【讨论】:

    • 那么您可以在没有负面影响的情况下删除索引(当然,如果它仅用于集群目的)?为什么索引也没有重新排列?对于必须加载大部分索引的查询来说,这种情况并不少见。我首先想知道这一点的原因是,我看到仅索引扫描的速度也有显着提高,但这不符合文档(仅讨论表)。
    • 对表进行聚类意味着根据它们在索引中的顺序对表中的行进行排序。在索引中,键总是被排序的:不需要再次对索引进行排序。
    • CLUSTER 文档谈到了性能:“如果您更倾向于访问某些数据而不是其他数据,并且有一个将它们组合在一起的索引,那么您将从使用 CLUSTER 中受益。如果您请求一系列表中的索引值,或具有匹配的多行的单个索引值,CLUSTER 将有所帮助,因为一旦索引识别出匹配的第一行的表页,所有其他匹配的行可能已经在同一个表页上,这样您就可以节省磁盘访问并加快查询速度。
    • 是的,但这不适用于仅索引扫描。索引是否总是在磁盘上排序?
    • OK:对于仅索引扫描,不需要对表进行集群。是的,btree 索引总是在磁盘上排序,
    猜你喜欢
    • 2018-05-20
    • 1970-01-01
    • 2012-05-20
    • 2012-12-30
    • 2011-05-18
    • 1970-01-01
    • 2011-04-05
    • 2012-08-26
    • 2014-02-22
    相关资源
    最近更新 更多