DROP INDEX——删除索引
DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] name
[, ...] [ CASCADE | RESTRICT ]
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 标准的索引规定。