↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

百科 / SQL 命令 / 索引与统计

SQL COMMAND · 索引与统计

DROP INDEX

移除一个索引

DROP索引与统计引入 10(基线)现存至 20 devel0 次语法变更

动词
DROP
对象
INDEX
引入版本
10(基线)
状态
现存
语法变更次数
0
手册小节数
5

本站手册 · 18官方文档 ↗

版本轨迹

相对 PostgreSQL 17 无变化。

语法铁道图 PostgreSQL 18

沿轨道从左向右阅读,分岔表示选择,绕行表示可选,回环表示重复。方框为参数,点击带下划线的参数可展开子规则。

DROP INDEX CONCURRENTLY IF EXISTS name , CASCADE RESTRICT

锁模式 PostgreSQL 18

具体锁模式取决于操作变体、目标对象和执行阶段;同一命令可同时取得表锁与行锁。查看完整冲突矩阵

SHARE UPDATE EXCLUSIVE · 表级锁

DROP INDEX CONCURRENTLY:在所属表上取得此模式,分阶段等待并移除索引;不在表上持有普通 DROP INDEX 的 ACCESS EXCLUSIVE。

ACCESS EXCLUSIVE · 表级锁

DROP INDEX(不含 CONCURRENTLY):在所属表上加 ACCESS EXCLUSIVE,阻塞读写;被删除的索引也需要锁定。

语法概要

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

PostgreSQL 18 手册 · 查看完整参考页

描述

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

参数

CONCURRENTLY

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

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

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

IF EXISTS

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

name

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

CASCADE

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

RESTRICT

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

示例

此命令会删除索引title_idx:

DROP INDEX title_idx;

兼容性

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

另见

语法演化

相邻大版本之间的差异,新的在前。版本号链接到对应快照。

  1. PostgreSQL 19← 18正文更新

    正文更新
  2. PostgreSQL 17← 16正文更新

    正文更新
  3. PostgreSQL 12← 11正文更新

    正文更新
  4. PostgreSQL 11← 10正文更新

    正文更新

同组命令

命令动词对象版本变动最近变更
INDEXES & STATISTICS索引与统计7 条↑
REINDEXREINDEX— 164 次
重建索引现存
CREATE INDEXCREATEINDEX 153 次
定义一个新索引现存
ALTER INDEXALTERINDEX 132 次
更改索引的定义现存
DROP INDEXDROPINDEX —
移除一个索引现存
CREATE STATISTICSCREATESTATISTICS 193 次
定义扩展统计信息现存
ALTER STATISTICSALTERSTATISTICS 173 次
更改扩展统计对象的定义现存
DROP STATISTICSDROPSTATISTICS —
删除扩展统计对象现存