首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PostgreSQL覆盖索引和主键

PostgreSQL覆盖索引和主键
EN

Stack Overflow用户
提问于 2021-03-22 18:17:59
回答 2查看 67关注 0票数 0

我在文档中找不到它,但我是否应该将表的主键包含在覆盖索引中?

查询(简化):SELECT id, y FROM table WHERE x=5

索引:CREATE INDEX idx_1 ON table(x) INCLUDE(id, y)或仅... INCLUDE(y)

EN

回答 2

Stack Overflow用户

发布于 2021-03-22 18:50:25

如果您希望仅使用索引扫描,则必须同时包含idx。主键索引与PostgreSQL中的其他索引没有什么不同。

票数 1
EN

Stack Overflow用户

发布于 2021-03-23 05:11:14

在PostgreSQL中,自动包含在指向表行的索引中的是名为"ctid“的系统列。主键不会自动包含在索引中,因此如果您希望将其包含在内,则需要指定它。

但是没有理由将其包含在INCLUDE中,而是直接将其放入索引主列列表CREATE INDEX idx_1 ON table(x, y, id)中。使用索引的原因包括:如果您希望索引在列列表的某个前缀上是唯一的,或者如果列是不支持排序操作符的类型,因此不能在btree索引的主列列表中。

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

https://stackoverflow.com/questions/66744105

复制
相关文章

相似问题

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