【问题标题】:indexes needed for table inheritance in postgres?postgres中表继承所需的索引?
【发布时间】:2011-03-22 23:24:31
【问题描述】:

这是一个相当简单的问题,但我找不到确切的答案。

我在 PostgreSQL 中有一个父表,然后是几个已定义的子表。已建立触发器,并且子表仅在字段(例如字段 x)满足特定条件时才插入数据。

当我使用基于 x 的字段查询父表时,PostgreSQL 知道立即转到与 x 的特定值相关的子表。

话虽如此,我不需要在列 x 上指定特定索引,对吗? PostgreSQL 已经知道如何对其进行排序,并且通过向父 x 添加索引,因此 PostgreSQL 在 x 上为每个新的子表生成唯一索引。

创建该索引有点多余,对吧?

【问题讨论】:

    标签: postgresql inheritance indexing unique


    【解决方案1】:

    如果 x 只有一个值(或非常非常少的值),如果可能丢失,则在子表上为 x 创建索引,是的。无论如何,计划者都会扫描整个表。

    如果 x 是时间戳并且您指定的时间范围可能不是整个分区,或者如果 x 是另一个范围或一组值,则索引最有可能获胜。

    编辑:当我说一个值或值范围时,我的意思是,每个子表。

    【讨论】:

    • x 是预定义列表的站点名称。因此,例如,父表可能是“city_description”,列“city”。假设我有 10 个子表,'chicago_city_description'、'dallas_city_description'、'nyc_city_description'...,我的触发器根据 'city' 的值对子表做出决定。此列永远不会是时间戳。所以摆脱索引就可以了吗?
    • 如果 x 是一个站点名称并且每个子表有一个站点名称 - 摆脱索引。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    相关资源
    最近更新 更多