PostgreSQLIndexes-PostgreSQL教程|
PostgreSQL Indexes
在本节中,我们将更有效地了解PostgreSQL Indexes的工作,为什么需要使用Indexes、PostgreSQL Indexes的特性、不同类型的Indexes以及在 PostgreSQL Indexes部分下执行的各种命令。
什么是 PostgreSQL Indexes?
在PostgreSQL 中,Indexes是用于增强从数据库中检索数据的特殊工具。
一个数据库Indexes是平行于一本书的Indexes。Indexes创建对所有值的访问,这些值显示在Indexes列上。
Indexes有助于数据库服务器比没有Indexes时更快地识别定义的行。我们必须正确使用Indexes才能获得显着的结果。
PostgreSQL Indexes的特点
PostgreSQL Indexes的一些基本特性如下:
- Indexes用于通过SELECT和WHERE增强数据输出
- 如果我们使用INSERT和UPDATE命令,它会减慢数据输入速度。
- 在不影响任何数据,我们可以创建和DROP的
- 我们可以使用CREATE INDEX命令的帮助生成Indexes,方法是定义Indexes名称和创建Indexes的表或列名称。
- 我们还可以创建一个唯一Indexes,它类似于UNIQUE 约束。
在 PostgreSQL Indexes下执行的命令:
在 PostgreSQL Indexes中,我们可以执行以下命令:
- Create Index
- Drop Index
- List indexes
- Unique Index
- Index on Expression
- Partial index
- Re-index
- Multicolumn Indexes
让我们一一了解它们:
命令 | 描述 |
---|---|
Create Index | 它用于通过定义Indexes名称和创建Indexes的表或列名称来创建新Indexes。 |
Drop Index | 该DROP INDEX命令用于删除当前Indexes。 |
List indexes | 它用于表示如何列出 PostgreSQL 数据库中的所有Indexes。 |
Unique Index | 该唯一Indexes命令允许我们指定的唯一Indexes一步一步来。 |
Index on Expression | 它用于根据表达式指定Indexes。 |
Partial index | 的部分Indexes用于显示使用部分的Indexes。 |
Re-index | 要重建一个或多个Indexes,我们可以使用 REINDEX 命令。 |
Multicolumn Indexes | 它用于显示多列Indexes的使用情况,以增强 WHERE 子句中具有多个条件的查询。 |
PostgreSQL Indexes的类型
所有的Indexes类型都使用各种算法和存储结构来管理不同类型的命令。
在PostgreSQL中,Indexes可以分为不同的部分,具体如下:
- Hash Indexes
- B-tree Indexes
- GIN Indexes
- GiST Indexes
- SP-GiST indexes
- BRIN Indexes
哈希Indexes
当表中包含Indexes列并与相等 (=) 运算符进行比较时,哈希Indexes只能处理简单的相等比较 (=)运算符。
对于这种类型的场景,开发者会考虑使用哈希Indexes。
我们可以在USING 子句中使用带有HASH Indexes的CREATE INDEX命令来创建一个哈希Indexes,如下图所示:
CREATE INDEX index_name
ON table_name
USING HASH (indexed_column);
B-tree indexes
PostgreSQL 中最重要的使用Indexes是BB-tree indexes。
B-Tree Indexes是一个平衡树,它保留排序后的数据,并允许在对数时间内进行插入、搜索、删除和顺序访问。
当Indexes列包含在评估中时,PostgreSQL 开发人员将考虑使用B 树Indexes,它使用以下运算符列表之一:
- <
- <=
- =
- >=
- BETWEEN
- IN
- IS NULL
- IS NOT NULL
此外,对于模式匹配运算符 LIKE 和~命令,查询开发人员可以使用B 树Indexes。
如果模式是持久的并且是模式开头的锚点,我们可以在以下示例中看到:
column_name LIKE 'abb%'
column_name ~ '^abb'
column_name LKE 'abc%'
- 另外,对于ILIKE和~*,如果模式以非字母字符开头,不受大写/小写转换的影响,那么PostgreSQL开发人员会故意使用B-treeIndexes。
- 在B树是一个非常不错的选择,如果我们使用Indexes来优化我们的PostgreSQL数据库启动。
- 如果我们使用CREATE INDEX命令而不描述任何Indexes类型,那么 PostgreSQL默认使用B-treeIndexes类型,因为它是最合适和最常见的查询。
GIN Indexes
- PostgreSQL Indexes的下一种类型是GIN,它代表Generalized Inverted Indexes,通常表示为GIN。
- 如果我们将多个值存储在单个列中,例如范围类型、数组、jsonb 和 hstore,则 GIN Indexes最有用。
GiST Indexes
- 该GiSTIndexes是最常用的全文检索和几何数据类型的Indexes。
- 在通用搜索树表示GiSTIndexes,它提供通用的树结构的建筑。
SP-GiST Indexes
- 在空间分割的要点记为SP-GiST的,保持了分区搜索树,这使广泛的不同的非平衡数据结构的范围内的发展。
- 包含自然聚类元素的数据也不是均衡的树,如多媒体、GIS、IP路由、电话路由和IP路由,在这种情况下,我们可以使用SP-GiST
BRIN
-
该BRIN指标可以很容易地保持,因为它是成本更低,相对于B树Indexes要小得多,它代表了
块范围Indexes
通常,BRIN Indexes用于包含线性排序顺序的列,例如销售订单的生成日期列
-
在 PostgreSQL Indexes中,BRIN 允许在一个巨大的表上使用Indexes,这在没有并行分区的 B-tree 早期是无法使用的。
使用 PostgreSQL Indexes的缺点
我们避免使用 PostgreSQL Indexes有以下原因:
- 不应在包含大量 NULL 值的列上使用 PostgreSQL Indexes。
- PostgreSQL Indexes不能用于小表。
- 我们不会为经常部署的列创建Indexes。
- 我们不为表创建Indexes,使用频繁的大批量更新或插入操作。
概述
在PostgreSQL Indexes部分,我们学习了以下主题:
- 在PostgreSQL的指标被用来增强从数据库中检索数据。
- 我们已经了解了PostgreSQL Indexes的特性。
- 我们还了解到 PostgreSQL Indexes支持各种命令,例如创建Indexes、删除Indexes、列表Indexes、唯一Indexes、表达式Indexes、部分Indexes、重新Indexes、多列Indexes。
- 我们还学习了多种类型的PostgreSQLIndexes,包括HASHIndexes、B-treeIndexes、GINIndexes、BRINIndexes、GiSTIndexes和SP-GiSTIndexes。
- 我们还了解到使用PostgreSQL Indexes的缺点。
相关文章:
- [PostgreSQL教程]PostgreSQL教程-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL特性-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL版本-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL语法-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL创建数据库-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL选择数据库-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL删除/删除数据库-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL创建表-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL删除/删除表-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL显示表-PostgreSQL教程|
相关推荐:
- [PostgreSQL教程]PostgreSQL与SQLite-PostgreSQL教程|
- [PostgreSQL教程]MongoDB与PostgreSQL-PostgreSQL教程|
- [PostgreSQL教程]psqlcommands-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLDate&TimeFunction-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLFunctions-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLMulti-columnIndexes-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL禁用触发器-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL左连接-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLANDCondition-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL获取子句-PostgreSQL教程|
- PostgreSQL与SQLite-PostgreSQL教程|
- PostgreSQL与Oracle-PostgreSQL教程|
- PostgreSQL与MariaDB-PostgreSQL教程|
- PostgreSQL与SQLServer-PostgreSQL教程|
- MongoDB与PostgreSQL-PostgreSQL教程|
- PostgreSQLEXCEPT-PostgreSQL教程|
- PostgreSQLINTERSECT-PostgreSQL教程|
- PostgreSQLUnion-PostgreSQL教程|
- psqlcommands-PostgreSQL教程|
- PostgreSQLDate&TimeFunction-PostgreSQL教程|
- PostgreSQL删除触发器-PostgreSQL教程|
- PostgreSQLOrderby子句-PostgreSQL教程|
- PostgreSQL与SQLite-PostgreSQL教程|
- PostgreSQLINTERSECT-PostgreSQL教程|
- PostgreSQLAlias-PostgreSQL教程|
- PostgreSQLNot-NullConstraint-PostgreSQL教程|
- PostgreSQL与Oracle-PostgreSQL教程|
- PostgreSQL与MariaDB-PostgreSQL教程|
- MongoDB与PostgreSQL-PostgreSQL教程|
- PostgreSQLUnion-PostgreSQL教程|