↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

百科 / Index AM

Index AM

比较六种内置索引方法的查询支持、排序、唯一性、存储选项和版本变化。

当前查看 PostgreSQL 18.6。

共 6 种内置方法;PostgreSQL 18.6 记录了 6 种。

方法与版本覆盖

  • B-tree 有序检索

    B-tree

    B-tree 能对可按某种顺序排序的数据执行等值查询和范围查询。具体而言,当索引列参与使用下列运算符之一的比较时,PostgreSQL 查询规划器会考虑使用 B-tree 索引:

  • Hash 等值检索

    Hash

    Hash 索引存储从索引列值派生出的 32 位 hash 码。因此,这类索引只能处理简单的等值比较。只要已索引列参与的是使用等号操作符的比较,查询规划器就会考虑使用 Hash 索引:

  • GiST 可扩展检索

    GiST

    GiST 并不是某一种索引,而是可以实现多种索引策略的基础框架。因此,能与 GiST 索引配合的具体运算符取决于索引策略,即操作符类。例如,PostgreSQL 标准发行版为多种二维几何数据类型提供 GiST 操作符类,支持使用下列运算符的索引查询:

  • SP-GiST 可扩展检索

    SP-GiST

    SP-GiST 与 GiST 一样,提供支持多种搜索方式的基础框架。SP-GiST 可实现多种基于磁盘的非平衡数据结构,例如四叉树、k-d 树和基数树(tries)。例如,PostgreSQL 标准发行版提供二维点的 SP-GiST 操作符类,支持使用下列运算符的索引查询:

  • GIN 元素检索

    GIN

    GIN 索引是 “ 倒排索引 ” ,适用于包含多个组成值的数据值,例如数组。倒排索引会为每个组成值保存单独的项,因此能够高效处理测试特定组成值是否存在的查询。

  • BRIN 块摘要

    BRIN

    BRIN 索引(Block Range INdexes 的缩写)存储的是关于表中连续物理块范围内所保存值的摘要信息。因此,它最适用于那些列值与表行物理顺序高度相关的列。与 GiST、SP-GiST 和 GIN 一样,BRIN 也可以支持多种不同的索引策略,而 BRIN 索引可使用哪些具体操作符取决于所采用的索引策略。对于具有线性排序顺序的数据类型,每个块范围上被索引的数据对应于该列值的最小值和最大值。这支持使用下列操作符的索引化查询:

方格表示样本中是否存在及文档能力的变化;最早样本不一定是该方法的引入版本。

能力矩阵 · PostgreSQL 18.6

点击单元格查看来源与条件。“未确定”表示当前手册证据不足以判断支持与否。

访问方法提供框架;支持的运算符和仅索引扫描可能取决于运算符类、数据类型及索引列。有条件与未知能力分别标注。

版本比较

目标 PostgreSQL 18.6

GIN

  • 并行索引构建: 不支持 → 支持

比较范围为能力状态和文档中的存储参数名称,不覆盖全部算法、性能特点、参数定义和发布说明变化。

如何选择索引

先确认查询使用的运算符与被索引的数据类型,再选择访问方法支持的操作符类。有序输出、近邻排序、覆盖列和仅索引扫描是不同的能力。

本清单收录内置索引方法。表访问方法与外部数据包装器使用不同接口;bloom 等扩展索引方法不在此清单中。

操作符类与操作符族 · pg_am 系统目录 · 版本变化