SQL COMMAND · 索引与统计
DROP INDEX
移除一个索引
DROP索引与统计引入 10(基线)现存至 20 devel0 次语法变更
- 动词
DROP- 对象
INDEX- 分组
- 索引与统计
- 引入版本
- 10(基线)
- 状态
- 现存
- 语法变更次数
- 0
- 手册小节数
- 5
版本轨迹
相对 PostgreSQL 17 无变化。
语法铁道图 PostgreSQL 18
沿轨道从左向右阅读,分岔表示选择,绕行表示可选,回环表示重复。方框为参数,点击带下划线的参数可展开子规则。
语法概要
DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
描述
DROP INDEX从数据库系统中删除一个现有索引。 要执行此命令,你必须是该索引的拥有者。
参数
CONCURRENTLY删除索引时,不阻塞该索引所在表上的并发查询、插入、更新和删除。 普通的
DROP INDEX会对该表获取ACCESS EXCLUSIVE锁,阻塞其他访问, 直到索引删除完成。使用该选项时,命令会改为等待相冲突的事务完成。使用此选项时有若干限制需要注意。只能指定一个索引名,并且不支持
CASCADE选项。(因此,支撑UNIQUE或PRIMARY KEY约束的索引不能以这种方式删除。) 另外,普通的DROP INDEX可以在事务块内执行, 但DROP INDEX CONCURRENTLY不可以。最后, 分区表上的索引也不能使用该选项删除。对于临时表,
DROP INDEX始终是非并发的, 因为没有其他会话可以访问它们,而且非并发删除索引的成本更低。IF EXISTS如果该索引不存在,则不要抛出错误。这种情况下会发出一个提示。
name要移除的索引名称(可以被模式限定)。
CASCADE自动删除依赖于该索引的对象,以及进一步依赖于这些对象的所有对象 (参见Section 5.15)。
RESTRICT如果有任何对象依赖于该索引,则拒绝删除它。这是默认值。
示例
此命令会删除索引title_idx:
DROP INDEX title_idx;
兼容性
DROP INDEX是PostgreSQL 的一种语言扩展。SQL 标准中没有关于索引的规定。
另见
语法演化
相邻大版本之间的差异,新的在前。版本号链接到对应快照。
PostgreSQL 20← 19正文更新
正文更新PostgreSQL 19← 18正文更新
正文更新PostgreSQL 14← 13正文更新
正文更新PostgreSQL 12← 11正文更新
正文更新PostgreSQL 11← 10正文更新
正文更新
同组命令
| 命令 | 动词 | 对象 | 版本变动 | 最近变更 |
|---|---|---|---|---|
REINDEX | REINDEX | — | 143 次 | |
| 重建索引 | 现存 | |||
CREATE INDEX | CREATE | INDEX | 143 次 | |
| 定义一个新索引 | 现存 | |||
ALTER INDEX | ALTER | INDEX | 132 次 | |
| 更改索引的定义 | 现存 | |||
DROP INDEX | DROP | INDEX | — | |
| 移除一个索引 | 现存 | |||
CREATE STATISTICS | CREATE | STATISTICS | 192 次 | |
| 定义扩展统计信息 | 现存 | |||
ALTER STATISTICS | ALTER | STATISTICS | 142 次 | |
| 更改扩展统计对象的定义 | 现存 | |||
DROP STATISTICS | DROP | STATISTICS | — | |
| 删除扩展统计对象 | 现存 | |||