索引

返回 PostgreSQL

理论:索引;失效与优化思路可对照 MySQL 索引与失效


索引类型

类型适用场景
B-tree默认,等值/范围查询,=<>BETWEEN
Hash纯等值查询,不支持范围,较少使用
GIN全文搜索、JSONB、数组的包含查询
GiST地理数据(PostGIS)、几何类型、范围类型
BRIN超大表的顺序写入字段(如时间戳),体积极小

示例

-- 普通 B-tree
CREATE INDEX idx_user_name ON users(name);
 
-- 唯一索引
CREATE UNIQUE INDEX idx_user_email ON users(email);
 
-- JSONB 的 GIN 索引(支持 @>、? 等操作)
CREATE INDEX idx_products_attrs ON products USING GIN(attrs);
 
-- 全文搜索 GIN 索引
CREATE INDEX idx_articles_tsv ON articles USING GIN(to_tsvector('english', content));
 
-- 部分索引(只索引满足条件的行,减小索引体积)
CREATE INDEX idx_active_users ON users(name) WHERE status = 'active';
 
-- 表达式索引(对函数结果建索引)
CREATE INDEX idx_lower_email ON users(LOWER(email));

全文搜索用法见 高级查询


相关