↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

已结束支持的版本: 7.1
历史版本。 PostgreSQL 7.1 已结束支持。 请参阅 当前版本手册.

7.2. 索引类型 #

Postgres 提供几种索引类型:B-树、R-树和 Hash。每种索引类型使用的算法使其更适合特定类型的查询。默认情况下,CREATE INDEX 命令会创建B-树索引,它适合最常见的情况。特别地,只要被索引列参与的比较使用下列操作符之一,Postgres 查询优化器就会考虑使用 B-树索引: <, <=, =, >=, >

R-树索引特别适合空间数据。要创建 R-树索引,使用如下形式的命令

CREATE INDEX name ON table USING RTREE (column);

只要被索引列参与的比较使用下列操作符之一,Postgres 查询优化器就会考虑使用R-树索引: <<, &<, &>, >>, @, ~=, && (这些操作符的含义请参阅第 4.8 节。)

只要被索引列参与的比较使用 = 操作符,查询优化器就会考虑使用hash 索引。下面的命令用于创建 hash 索引:

CREATE INDEX name ON table USING HASH (column);

注意

由于 hash 索引的用途有限,通常应该优先选择 B-树索引而不是 hash 索引。我们没有充分的证据表明,即使在 = 比较上,hash 索引也确实比 B-树更快。此外,hash 索引需要更粗粒度的锁;参见第 9.7 节。

B-树索引方法是 Lehman-Yao 高并发 B-树的一种实现。R-树索引方法使用 Guttman 的二次分裂算法实现标准 R-树。hash 索引方法是 Litwin 线性散列的一种实现。我们提到这些算法只是为了说明所有这些索引方法都是完全动态的,不需要定期优化(例如,与静态散列方法的情况不同)。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.