受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: devel

DROP INDEX

DROP INDEX — 移除一个索引

Synopsis

DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

描述

DROP INDEX从数据库系统中删除一个现有索引。 要执行此命令,你必须是该索引的拥有者。

参数

CONCURRENTLY

删除索引时,不阻塞该索引所在表上的并发查询、插入、更新和删除。 普通的DROP INDEX 会对该表获取ACCESS EXCLUSIVE锁,阻塞其他访问, 直到索引删除完成。使用该选项时,命令会改为等待相冲突的事务完成。

使用此选项时有若干限制需要注意。只能指定一个索引名,并且不支持 CASCADE选项。(因此,支撑UNIQUEPRIMARY KEY约束的索引不能以这种方式删除。) 另外,普通的DROP INDEX可以在事务块内执行, 但DROP INDEX CONCURRENTLY不可以。最后, 分区表上的索引也不能使用该选项删除。

对于临时表,DROP INDEX始终是非并发的, 因为没有其他会话可以访问它们,而且非并发删除索引的成本更低。

IF EXISTS

如果该索引不存在,则不要抛出错误。这种情况下会发出一个提示。

name

要移除的索引名称(可以被模式限定)。

CASCADE

自动删除依赖于该索引的对象,以及进一步依赖于这些对象的所有对象 (参见Section 5.15)。

RESTRICT

如果有任何对象依赖于该索引,则拒绝删除它。这是默认值。

示例

此命令会删除索引title_idx

DROP INDEX title_idx;

兼容性

DROP INDEXPostgreSQL 的一种语言扩展。SQL 标准中没有关于索引的规定。

另见

CREATE INDEX

提交更正

如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。