PostgreSQL Indexes PostgreSQL 启用触发器 PostgreSQL Create Index 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 Create Index