📜  PostgreSQL – 索引类型

📅  最后修改于: 2022-05-13 01:57:15.039000             🧑  作者: Mango

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 路由。