PostgreSQL 覆盖索引添加额外字段信息

PostgreSQL About 547 words

场景

user表中,有username唯一索引列。

当我们从user表中查找id时,数据库只需一次查询(这里的只查询一次,指的是:数据库内部只从索引就能获取需要的数据不用再查询保存在数据块中的其他列数据),就能直接返回数据。

因为这里命中了唯一索引,所以直接从索引中取username数据,不需要再反查主数据。

也叫做覆盖索引。

select username from user where id = 1;

覆盖索引添加额外数据

覆盖索引中会保存索引列的数据,如果查询时还需要查询nickname,同时又要保证数据库只查询一次,就需要用到覆盖索引的include关键字,添加额外数据到索引中。

select username, nickname from user where id = 1;

语法

create index idx_username on user include nickname, id_card;

参考

https://wiki.postgresql.org/wiki/Index-only_scans#Covering_indexes

https://literatejava.com/sql/covering-indexes-query-optimization

Views: 294 · Posted: 2023-11-22

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓


Today On History
Browsing Refresh