PostgreSQL 索引
在本节中,我们将更有效地理解 PostgreSQL索引的工作,为什么我们需要使用索引,PostgreSQL索引的功能,不同类型的索引以及在" PostgreSQL索引"部分下执行的各种命令。
什么是PostgreSQL索引?
在 PostgreSQL 中,索引是用于增强从数据库中检索数据的特殊工具。
数据库索引与书籍的索引平行。索引创建对所有值的访问,并显示在索引列上。
索引倾向于帮助数据库服务器识别已定义的行,这比没有索引时要快得多。我们必须正确使用 Indexes 以获得明显的结果。
PostgreSQL索引的功能
PostgreSQL索引如下:
通过 SELECT 和 WHERE使用索引来增强数据输出
如果我们使用 INSERT 和 UPDATE 命令,则会减慢数据输入速度。
在不影响任何数据的情况下,我们可以创建和删除
我们可以通过定义索引所在的索引名称和表或列名称,在 CREATE INDEX 命令的帮助下生成索引。已创建。
我们还可以创建一个唯一索引,该索引类似于 UNIQUE约束。
在PostgreSQL索引下执行的命令:
在PostgreSQL索引中,我们可以执行以下命令:
Create Index
Drop Index
List indexes
Unique Index
Index on Expression
Partial index
Re-index
Multicolumn Indexes
让我们一一理解它们:
命令 |
说明 |
Create Index |
通过定义索引名称和表或列名称来创建新索引。 |
Drop Index |
下降索引命令用于删除当前索引。 |
List indexes |
它用来表示如何列出PostgreSQL数据库中的所有索引。 |
Unique Index |
唯一索引命令允许我们逐步指定唯一索引。 |
Index on Expression |
它用于基于表达式指定索引。 |
Partial index |
部分索引用于显示部分索引的使用。 |
Re-index |
要重建一个或多个索引,我们可以使用REINDEX命令。 |
Multicolumn Indexes |
它用于显示多列索引的使用情况,以增强WHERE子句中具有多个条件的查询。 |
PostgreSQL索引的类型
所有索引类型都使用各种算法和存储结构来管理不同类型的命令。
在PostgreSQL中,索引可分为以下几部分:
Hash Indexes
B-tree Indexes
GIN Indexes
GiST Indexes
SP-GiST indexes
BRIN Indexes
Hash Indexes
当表中包含索引列并将其与等于(=)运算符进行比较时,哈希索引只能使用简单的等式比较(=)运算符。
对于这种情况,开发人员将考虑哈希索引。
我们可以使用 CREATE INDEX 命令,并在 USING子句中使用 HASH索引创建一个哈希索引,如下图所示:
CREATE INDEX index_name
ON table_name
USING HASH (indexed_column);
B-tree Indexes
在PostgreSQL中最重要的使用索引是 B树索引。
B树索引树索引是一种平衡树,它保留排序的数据,并允许对数时间内的插入,搜索,删除和顺序访问。。
当评估中包含索引列时,PostgreSQL开发人员将考虑使用 B树索引,该评估使用以下运算符列表之一:
<
<=
=
>=
BETWEEN
IN
IS NULL
NOT NULL
此外,对于模式匹配运算符LIKE和〜命令,查询开发人员可以使用 B树索引。
如果模式是持久的并且是模式开始时的锚点,如下面的示例所示,
column_name LIKE 'abb%'
column_name ~ '^abb'
column_name LKE 'abc%'
另外,对于 ILIKE和〜*,,如果模式以非字母字符开头,且不受大小写转换的影响,则PostgreSQL开发人员将故意使用B树索引。
如果我们已开始使用索引来优化PostgreSQL数据库,那么 B树是一个很好的选择。
如果我们使用 CREATE INDEX 命令而不描述任何索引类型,则PostgreSQL默认使用 B-tree 索引类型,因为它是最合适且最合适的索引类型常见查询。
GIN Indexes
下一种PostgreSQL索引类型是 GIN ,它代表广义倒排索引,通常表示为 GIN 。
如果我们在单个列中存储了多个值,例如范围类型,数组,jsonb和hstore,则GIN索引最为有用。
GiST Indexes
GiST索引最常用于全文搜索和几何数据类型的索引。
通用搜索树表示GiST索引,该索引提供了通用树结构的构建。
SP-GiST indexes
将空间分区的GiST标记为为 SP-GiST ,它可以保留分区的搜索树,从而可以开发各种不相似的非平衡数据结构。
包含自然聚类元素的数据也不是均衡树,例如多媒体,GIS,IP路由,电话路由和IP路由,在这种情况下,我们可以使用 SP-GiST
BRIN Indexes
与B树索引相比, BRIN 索引易于维护,因为它成本更低,更小,并且代表 Block Range Indexes 。
通常,BRIN索引用于包含线性排序顺序的列,例如销售订单 的生成日期列
在PostgreSQL索引中,BRIN允许在巨大的表上使用索引,而在没有并行分区的情况下,B-tree无法使用该索引。
使用PostgreSQL索引的缺点
我们有以下避免使用PostgreSQL索引的原因:
不应在包含大量NULL值的列上使用PostgreSQL索引。
PostgreSQL索引不能与小表一起使用。
我们不为经常部署的列创建索引。
我们不会为表创建索引,而要进行频繁的大批量更新或插入操作。
概述
在 PostgreSQL索引部分中,我们学习了以下主题:
PostgreSQL索引用于增强从数据库中检索数据。
我们已经了解PostgreSQL索引的功能。如创建索引,删除索引,列表索引,唯一索引,Expr索引ession,部分索引,重新索引,多列索引。
我们还学习了多种类型的PostgreSQL索引,包括HASH索引, B树索引,GIN索引,BRIN索引,GiST索引和SP-GiST索引。
我们还了解了使用 PostgreSQL索引的缺点。