【问题标题】:Indexes In PostgresPostgres 中的索引
【发布时间】:2019-11-30 17:41:11
【问题描述】:

所以我想了解一下 postgresql 中的索引,到目前为止我已经了解索引有助于更快地查询并且所有主键都有索引,我想知道是否所有外键(指主键另一个表的)也应该有一个索引,还是只是我们正在查询的表中的属性需要索引?

谢谢。

【问题讨论】:

    标签: sql postgresql indexing foreign-keys


    【解决方案1】:

    索引应该主要基于正在使用的查询。如果您要通过外键进行过滤、聚合或排序,那么它作为索引是明智的。

    另一个用途是使用索引来强制执行唯一约束。

    换句话说,没有规定外键应该总是被索引。这通常是个好主意,但这取决于您要运行的查询。

    【讨论】:

    • 感谢您的回答,我只是想知道两个表之间是否存在自然连接,那么我是否需要为连接中涉及的属性创建索引?
    【解决方案2】:

    索引外键不是强制性的。但是,如果您曾经从被引用的表中删除,或者以更改主键的方式对其进行更新,那么它将必须通过外键列搜索引用表中的行,以确保它不会违反(或将它们设置为空,或删除它们,具体取决于外键中定义的操作)。如果外键列上没有索引,这可能会很慢。

    此外,您可能希望运行诸如“显示此主行的所有详细行”之类的查询,并且不使用也会很慢的索引。

    如果您从不从引用的表中删除并且从不运行这种查询,那么您可能不需要索引。

    【讨论】:

      猜你喜欢
      • 2010-11-15
      • 1970-01-01
      • 1970-01-01
      • 2019-10-02
      • 2020-12-24
      • 2021-05-21
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      相关资源
      最近更新 更多