选择 打开 改范围 完整检索页

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

语法概要

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

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

描述

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

另见

语法演化

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

  1. PostgreSQL 20← 19正文更新

    正文更新
  2. PostgreSQL 19← 18正文更新

    正文更新
  3. PostgreSQL 14← 13正文更新

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

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

    正文更新

同组命令

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