当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


PostgreSQL DROP INDEX用法及代码示例


在 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;

输出:

相关用法


注:本文由纯净天空筛选整理自RajuKumar19大神的英文原创作品 PostgreSQL – DROP INDEX。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。