2024年9月26日: PostgreSQL 17 发布!
支持的版本:当前 (17) / 16 / 15 / 14 / 13 / 12
开发版本:devel
不支持的版本: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

在不锁定并发选择、插入、更新和删除索引所在表的的情况下删除索引。普通的 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

提交更正

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