在 PostgreSQL 中,DROP INDEX删除现有索引的语句。
用法:
DROP INDEX [ CONCURRENTLY]
[ IF EXISTS ] index_name
[ CASCADE | RESTRICT ];
让我们分析以上语法:
- index_name:这用于在后面指定要删除的索引的名称下降 index 条款。
- 如果存在:尝试删除不存在的索引将导致错误。为避免这种情况,您可以使用如果存在选项。如果您删除不存在的索引如果存在, PostgreSQL 改为发出通知。
- CASCADE:如果索引有依赖对象,则使用CASCADE自动删除这些对象和所有对象的选项依靠在那些对象上。
- 严格:这个RESTRICT选项指示 PostgreSQL 拒绝删除索引,如果有任何对象依赖它。这下降 index 用途RESTRICT默认情况下。
- 同时: 当您执行 DROP INDEX 语句时,PostgreSQL 会获取该表的排他锁并阻止其他访问,直到索引删除完成。要强制命令在删除索引之前等待冲突事务完成,您可以使用 CONCURRENTLY 选项。
出于举例的目的,我们将使用演员 表从样本数据库为演示。
例:
以下语句为first_name 的列演员 表:
CREATE INDEX idx_actor_first_name ON actor (first_name);
有时,该询问优化器不使用索引。例如,下面的语句查找名为‘的actor约翰':
SELECT * FROM actor WHERE first_name = 'John';
查询没有使用idx_actor_first_name 之前定义的索引如以下 EXPLAIN 语句中所述:
EXPLAIN SELECT * FROM actor WHERE first_name = 'John';
这是因为查询优化器认为只扫描整个表来定位行更为优化。因此,该idx_actor_first_name在这种情况下没有用,我们需要删除它:
DROP INDEX idx_actor_first_name;
输出:
相关用法
- PostgreSQL DROP DATABASE用法及代码示例
- PostgreSQL DROP COLUMN用法及代码示例
- PostgreSQL DROP TABLE用法及代码示例
- PostgreSQL DROP SCHEMA用法及代码示例
- PostgreSQL Drop用法及代码示例
- PostgreSQL DROP TRIGGER用法及代码示例
- PostgreSQL DROP ROLE用法及代码示例
- PostgreSQL DROP TABLESPACE用法及代码示例
- PostgreSQL CREATE INDEX用法及代码示例
注:本文由纯净天空筛选整理自RajuKumar19大神的英文原创作品 PostgreSQL – DROP INDEX。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。