【问题标题】:Postgres using the primary key index as a covering indexPostgres 使用主键索引作为覆盖索引
【发布时间】:2012-07-06 22:22:57
【问题描述】:

我想知道,在 Postgres 中,将额外字段捎带到为主键隐式创建的索引中是否有任何缺点,以便不必创建更多索引。

这是在 SQL Server 中创建聚集索引的常用技术。

编辑

很好 article 在 Postgres 索引上。似乎 Postgres 索引动态与 SQL 服务器不同。

【问题讨论】:

    标签: sql sql-server postgresql indexing


    【解决方案1】:

    不,这是不可能的。

    PostgreSQL 不能在不使它们在索引中“活动”的情况下“包含”列。

    目前 PostgreSQL 不支持仅索引扫描。不过,这将包含在即将发布的 9.2 版本中。

    但是,将不需要的列添加到索引可能会对更新造成性能损失,因为非索引列的更新效率比索引列高得多。

    【讨论】:

    • 嗯,但如果 id 是唯一的,这意味着整个三元组是唯一的?
    • ;) 我担心 Postgres 正在做一些有趣的事情。
    • 哇哦,你是说 Postgres 不做覆盖索引?
    • @Hassan Syed:在 9.2 中,Postgres 将能够从索引中提取数据,而不必读取索引然后转到表页面来提取实际数据。使用 9.2,您应该能够创建覆盖索引。
    • @HassanSyed 正确,PostgreSQL 不支持覆盖索引,但在 9.2 中将存在有限的支持
    猜你喜欢
    • 2021-05-21
    • 2013-08-22
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 2011-05-09
    • 1970-01-01
    相关资源
    最近更新 更多