PostgreSQL Drop Index


PostgreSQL Drop Index

在本节中,我们要了解的工作PostgreSQL的DROP INDEX实例中的DROP INDEX命令

为什么我们使用 PostgreSQL Drop index 命令?

PostgreSQL 中Drop index命令用于删除现有索引。如果我们删除一个索引,它将提高性能。

PostgreSQL Drop Index 命令的语法

Drop Index命令的语法如下:

DROP INDEX  [ CONCURRENTLY]  
[ IF EXISTS ]  index_name   
[ CASCADE | RESTRICT ];

在上面的语法中,我们使用了以下参数,如下表所示:

参数 描述
index_name 它用于定义索引名称,我们要删除它。它应该写在DROP INDEX命令之后。
IF EXISTS 如果我们尝试删除一个不存在的索引,它会在输出中引发错误。因此,我们可以使用IF EXISTS选项来解决此错误。
CASCADE CASCADE选项在索引中,其中包含了相关对象使用。而CASCADE 选项将自动删除这些对象以及依赖于这些对象的所有对象。
RESTRICT RESTRICT选项PostgreSQL的通知,如果任何对象依靠它来删除该索引。默认情况下,DROP INDEX命令使用RESTRICT选项。

同时

如果我们执行DROP INDEX命令,PostgreSQL 会获得表的排他锁并阻止其他访问,直到索引删除完成。

在这种情况下,我们可以使用CONCURRENTLY选项强行让语句等待直到矛盾事务结束,然后再消除索引。

DROP INDEX CONCURRENTLY包含了一些界限:

  • CASCADE选项不支持同时使用DROP INDEX CONCURRENTLY
  • 如果我们同时使用DROP INDEX,也不支持在事务块中实现

注意:我们可以使用逗号(,)分隔索引,同时删除多个索引,如下图所示:

  1. 删除**索引** index_name, index_name2,... ;

PostgreSQL DROP INDEX 示例

让我们看一个例子来理解PostgreSQL DROP Index命令的工作。

为此,我们采用了Employee\表,该表是我们在 PostgreSQL 教程的前面部分中创建的。

Employee表\包含各列如EMP_ID,employee_name,电话和地址

一旦我们执行下面的SELECT命令,我们就可以看到存在于Employee\表中的数据,如下面的屏幕截图所示:

  1. 选择 * 员工;

输出

执行上述命令后,我们将得到以下输出:

PostgreSQL Drop Index

现在,我们为Employee表的Address列创建一个索引,如以下命令所示:

CREATE INDEX idex_emp_address   
ON Employee (address);

执行上述命令后,我们会得到如下消息窗口,显示Idex_emp_address已成功创建。

PostgreSQL Drop Index

注意:有时,命令优化器不使用索引。

正如我们在下面的例子中,下面的命令用于识别地址Boston的员工:

SELECT * FROM Employee  
WHERE address = 'Boston';

输出

在执行上述命令时,我们将获得以下输出,我们成功识别了地址为波士顿的员工

PostgreSQL Drop Index

在上面的命令中,我们没有使用idex_emp_address索引,它是在 PostgreSQL 索引教程的 PostgreSQL 创建索引的前面部分中指定的,如下面的EXPLAIN命令所示:

EXPLAIN SELECT *  
FROM Employee  
WHERE address = 'Boston';

输出

执行上述命令后,我们将得到以下输出,其中显示了Employee\表的查询计划。

PostgreSQL Drop Index

发生这种情况是因为查询开发人员认为扫描整个表以定位行是理想的做法。

因此,在这种情况下,使用idex_emp_address是没有好处的;这就是我们在以下命令的帮助下删除它的原因:

DROP INDEX idex_emp_address;

输出

在执行上述命令时,我们将收到以下消息,显示idex_emp_address索引已成功删除

PostgreSQL Drop Index

概述

PostgreSQL Drop Index部分,我们学习了以下主题:

  • 我们了解PostgreSQL drop Index命令,它用于删除特定表的索引。