PostgreSQL 删除索引
在本节中,我们将了解 PostgreSQL删除索引和示例的工作原理 Drop index命令。
为什么我们使用PostgreSQL Drop index命令?
在 PostgreSQL ,拖放索引命令用于删除现有索引。而且,如果我们删除索引,它将提高性能。
PostgreSQL删除索引命令的语法
删除索引命令如下:
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 时,不支持 CASCADE 选项。
如果我们同时使用 DROP INDEX,则不支持在事务块中执行。
注意: 我们可以使用逗号(,)分隔索引,并同时删除多个索引,如下图所示:
DROP INDEX index_name, index_name2,... ;
PostgreSQL DROP INDEX的示例
让我们看一个示例来了解 PostgreSQL DROP Index 命令的工作。
为此,我们使用在PostgreSQL教程前面的部分中创建的 Employee 表。
和 Employee表 包含各种列,例如 emp_id,employee_name,电话和地址。
一旦我们执行以下 SELECT 命令,我们可以看到 Employee 中存在的数据表,如以下屏幕截图所示:
输出
执行上述命令后,我们将获得以下输出:
现在,我们为 Employee 表的 Address 列创建索引,如以下命令:
CREATE INDEX idex_emp_address
ON Employee (address);
输出
执行上述命令后,我们将获得以下消息窗口,其中显示 Idex_emp_address 已成功创建。
注意: 有时,命令优化器不使用索引。
在下面的示例中,我们可以使用以下命令来标识其地址为波士顿的员工:
SELECT * FROM Employee
WHERE address = 'Boston';
输出
执行上述命令时,我们将获得以下输出,我们在其中成功识别出地址为波士顿的那些雇员。
在上述命令中,我们未使用 idex_emp_address 索引,该索引在PostgreSQL索引教程的PostgreSQL创建索引的前面部分中指定,如以下 EXPLAIN 命令所示:
EXPLAIN SELECT *
FROM Employee
WHERE address = 'Boston';
输出
执行上述命令后,我们将获得以下输出,其中显示了 Employee 的查询计划表。
之所以会这样,是因为查询开发人员认为它
因此,在这种情况下, idex_emp_address 不利于使用。这就是为什么我们在以下命令的帮助下删除:
DROP INDEX idex_emp_address;
输出
在执行上述命令时,我们将收到以下消息,该消息显示 idex_emp_address 索引已为 。
概述
在 PostgreSQL丢弃索引部分中,我们学习了以下主题:
我们了解 PostgreSQL删除索引命令,该命令用于删除特定表的索引。