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: 612 · Posted: 2023-11-22
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...