加载中...
GIN(Generalized Inverted Index,通用倒排索引)是 PostgreSQL 的一种索引类型,面向"一个字段包含多个可索引元素"的复合值,如数组、JSONB 文档、全文检索的词向量(tsvector)等。
GIN 把每行的复合值拆解为多个键(如数组的每个元素、文档的每个词),为每个键维护一个指向包含它的行的 posting list,本质是数据库内的倒排索引。键组织在 B 树中,posting list 过大时转为 posting tree。为缓解"改一行要更新多个键"的写放大,GIN 提供 fastupdate 待处理列表,把新条目暂存起来批量合并。
典型场景包括:JSONB 的包含查询(@>)、数组的重叠与包含、全文检索(@@)、pg_trgm 三元组模糊搜索(LIKE '%关键词%' 加速)。
同类场景下 GIN 查询更快、索引更精确,但构建与更新更慢、体积可能更大;写入频繁的表有时选 GiST 更均衡。
登录 后参与讨论
暂无讨论,来发表第一条评论吧