| 索引类型 | 底层结构 | 核心特点 | 适用场景 |
|---|---|---|---|
| B-Tree(默认) | 平衡树 | 支持等值、范围查询(=、>、<、BETWEEN),排序 / 分组优化,PG 最常用 | 主键、外键、普通字段(如 id、create_time、name) |
| Hash | 哈希表 | 仅支持等值查询(=),效率比 B-Tree 高,但不支持范围 / 排序 | 高频等值查询的字段(如用户手机号、唯一标识) |
| GIN | 倒排索引 | 支持多值类型(数组、JSONB)、全文检索,适合「包含 / 匹配」查询 | JSONB 字段、数组字段、全文搜索(如文章内容) |
| GiST | 通用搜索树 | 支持空间数据(GIS)、几何类型、全文检索,灵活性高 | 地理位置(POINT/POLYGON)、全文检索 |
| BRIN | 块范围索引 | 占用空间极小(MB 级),适合有序且大范围的字段(如时间戳) | 海量时序数据(如日志表的 create_time) |
| SP-GiST | 空间分区 GiST | 优化非平衡数据结构的查询(如四叉树、k-d 树) | 特殊空间数据、IP 地址范围查询 |
- 核心索引选择:普通等值 / 范围查询用 B-Tree,JSONB / 数组用 GIN,纯等值查询用 Hash,海量时序数据用 BRIN;