PostgreSQL – 索引类型
在本文中,我们将研究PostgreSQL 中的索引类型以及如何正确使用它们。
PostgreSQL 有 6 种主要索引类型:
- B树索引
- 哈希索引
- GIN 索引
- 布林
- GiST 索引
- SP-GiST 索引
让我们简要讨论它们。
B树索引
B-tree 是一种自平衡树,它维护已排序的数据,并允许在对数时间内进行搜索、插入、删除和顺序访问。
每当索引列涉及使用以下运算符之一的比较时,PostgreSQL 查询规划器将考虑使用 B 树索引:
<
<=
=
>=
BETWEEN
IN
IS NULL
IS NOT NULL
此外,如果模式是一个常数,是在模式的开始锚查询规划可用于涉及模式匹配运算符LIKE和查询〜B树索引。
例子:
column_name LIKE 'foo%'
column_name LIKE 'bar%'
column_name ~ '^foo'
此外,查询规划器将考虑对ILIKE使用 B 树索引 和~*如果模式以非字母字符开头,这些字符不受大写/小写转换的影响。
哈希索引
哈希索引只能处理简单的相等比较 (=)。这意味着每当索引列使用 equal(=)运算符进行比较时,查询计划器将考虑使用哈希索引。
要创建哈希索引,请在 USING 子句中使用 CREATE INDEX 语句和 HASH 索引类型,如下所示:
Syntax:
CREATE INDEX index_name
ON table_name USING HASH (indexed_column);
GIN 索引
GIN 代表Generalized Inverted Indexes 。它通常被称为 GIN。
当您在单个列中存储多个值时,GIN 索引最有用,例如 hstore、array、jsonb 和范围类型。
布林
BRIN 代表块范围索引。与 B 树索引相比,BRIN 更小,维护成本更低。
BRIN 允许在非常大的表上使用索引,这在以前使用没有水平分区的 B 树是不切实际的。 BRIN 常用于具有线性排序顺序的列,例如,销售订单表的创建日期列。
GiST 索引
GiST 代表广义搜索树。 GiST 索引允许构建通用的树结构。 GiST 索引可用于索引几何数据类型和全文搜索。
SP-GiST 索引
SP-GiST 代表空间分区的 GiST 。 SP-GiST 支持分区搜索树,有助于开发各种不同的非平衡数据结构。 SP-GiST 索引最适用于具有自然聚类元素但也不是均衡树的数据,例如 GIS、多媒体、电话路由和 IP 路由。