2025年9月25日: PostgreSQL 18 发布!
支持的版本: 当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本: devel
不支持的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

DROP INDEX

DROP INDEX — 删除索引

概要

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

描述

DROP INDEX 从数据库系统中删除一个已存在的索引。要执行此命令,您必须是索引的所有者。

参数

CONCURRENTLY

在不锁定表上索引的并发 SELECT、INSERT、UPDATE 和 DELETE 的情况下删除索引。常规的 DROP INDEX 命令会对表获取 ACCESS EXCLUSIVE 锁,直到索引删除完成才会阻塞其他访问。使用此选项,命令将等待直到冲突的事务完成。

使用此选项时需要注意几个事项。只能指定一个索引名称,并且不支持 CASCADE 选项。(因此,不支持此方式删除支持 UNIQUEPRIMARY KEY 约束的索引。)此外,常规的 DROP INDEX 命令可以在事务块内执行,但 DROP INDEX CONCURRENTLY 不能。最后,分区表的索引不能使用此选项删除。

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

IF EXISTS

如果索引不存在,则不报错。在这种情况下会发出一个通知。

name

要删除的索引的名称(可以选择是否包含模式限定)。

CASCADE

自动删除依赖于该索引的对象,以及反过来依赖于那些对象的全部对象(参见 第 5.15 节)。

RESTRICT

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

示例

此命令将删除索引 title_idx

DROP INDEX title_idx;

兼容性

DROP INDEXPostgreSQL 的语言扩展。SQL 标准中没有提供索引的规定。

另请参阅

CREATE INDEX

提交更正

如果您在文档中发现任何不正确、与您对特定功能的体验不符或需要进一步澄清的内容,请使用 此表格 报告文档问题。