Postgresql 简明教程
PostgreSQL - INDEXES
索引是数据库搜索引擎可用来加速数据检索的特殊查找表。简而言之,索引是表中数据的指针。数据库中的索引与书本后面的索引非常相似。
例如,如果你想引用一本书中讨论特定主题的所有页面,你必须首先参考索引,该索引按字母顺序列出所有主题,然后参考一个或多个特定的页码。
索引有助于加快 SELECT 查询和 WHERE 子句;但是,它会使带有 UPDATE 和 INSERT 语句的数据输入变慢。索引可以在不影响数据的情况下创建或删除。
创建索引涉及使用 CREATE INDEX 语句,该语句允许你命名索引、指定表和要索引的列(一个或多个)以及指示索引是按升序还是降序。
索引也可以是唯一的,类似于 UNIQUE 约束,其中索引禁止在列或有索引列组合中重复条目。
Index Types
PostgreSQL 提供了几种索引类型:B-tree、Hash、GiST、SP-GiST 和 GIN。每种索引类型都使用不同的算法,最适合不同类型的查询。默认情况下,CREATE INDEX 命令会创建 B-tree 索引,这适用于大多数常见情况。
Single-Column Indexes
单列索引是基于仅一个表列创建的索引。基本语法如下 -
CREATE INDEX index_name
ON table_name (column_name);
Partial Indexes
部分索引是在表的子集上构建的索引;子集由条件表达式(称为部分索引的谓词)定义。索引仅包含满足谓词的那些表行的条目。基本语法如下:
CREATE INDEX index_name
on table_name (conditional_expression);
Implicit Indexes
隐式索引是对象创建时由数据库服务器自动创建的索引。对于主键约束和唯一约束会自动创建索引。
Example
以下是一个示例,我们将在 COMPANY 表的 salary 列上创建一个索引:
# CREATE INDEX salary_index ON COMPANY (salary);
现在,让我们使用 \d company 命令列出 COMPANY 表中所有可用的索引。
# \d company
这将产生以下结果,其中 company_pkey 是在创建表时创建的隐式索引。
Table "public.company"
Column | Type | Modifiers
---------+---------------+-----------
id | integer | not null
name | text | not null
age | integer | not null
address | character(50) |
salary | real |
Indexes:
"company_pkey" PRIMARY KEY, btree (id)
"salary_index" btree (salary)
您可以使用 \di 命令列出整个索引数据库 −