CREATE INDEX
是用于创建索引的 DDL 命令。
CREATE INDEX
一直存在于 PostgreSQL 中。
更改历史记录
- PostgreSQL 15
UNIQUE [ NULLS [ NOT ] DISTINCT ]
语法添加 (提交 94aa7cc5)
- PostgreSQL 13
- PostgreSQL 12
- 可以使用
pg_stat_progress_create_index
跟踪CREATE INDEX
的进度 (提交 ab0dfc96)
- 可以使用
- PostgreSQL 11
- 添加了通过
INCLUDE
子句支持覆盖索引 (提交 8224de4f)
- 添加了通过
- PostgreSQL 9.5
IF NOT EXISTS
语法添加 (提交 08309aaf)
- PostgreSQL 9.1
- 添加了选项
COLLATE
(提交 414c5a2e)
- 添加了选项
- PostgreSQL 8.3
- 添加了选项
ASC
/DESC
/NULLS FIRST
/NULLS LAST
(对于 btree 索引) (提交 44317582)
- 添加了选项
- PostgreSQL 8.2
- PostgreSQL 8.0
- 添加了选项
TABLESPACE
(提交 2467394e)
- 添加了选项
- PostgreSQL 7.2
- 添加了对部分索引的支持 (初始提交 f31dc0ad)
- PostgreSQL 6.1
- 正确的多列索引创建 (提交 65019fcf)
示例
CREATE INDEX
的基本用法示例
postgres=# CREATE INDEX ON foo (bar_id); CREATE INDEX postgres=# \d foo Table "public.foo" Column | Type | Collation | Nullable | Default --------+---------+-----------+----------+--------- id | integer | | not null | bar_id | integer | | not null | Indexes: "foo_pkey" PRIMARY KEY, btree (id) "foo_bar_id_idx" btree (bar_id) Foreign-key constraints: "foo_bar_id_fkey" FOREIGN KEY (bar_id) REFERENCES bar(id)
参考文献
- PostgreSQL 文档: CREATE INDEX
有用链接
- 使用 Postgres CREATE INDEX:了解操作类、索引类型等 - 2021 年 8 月 pganalyze 博客文章