PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

DROP INDEX

DROP INDEX — 删除一个索引

Synopsis

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 标准中没有关于索引的规定。

另请参阅

CREATE INDEX