PostgreSQLDropIndex-PostgreSQL教程|
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,也不支持在事务块中实现。
注意:我们可以使用逗号(,)分隔索引,同时删除多个索引,如下图所示:
- 删除**索引** index_name, index_name2,... ;
PostgreSQL DROP INDEX 示例
让我们看一个例子来理解PostgreSQL DROP Index命令的工作。
为此,我们采用了Employee表,该表是我们在 PostgreSQL 教程的前面部分中创建的。
而Employee表包含各列如EMP_ID,employee_name,电话和地址。
一旦我们执行下面的SELECT命令,我们就可以看到存在于Employee表中的数据,如下面的屏幕截图所示:
- 选择 * 从 员工;
输出
执行上述命令后,我们将得到以下输出:
现在,我们为Employee表的Address列创建一个索引,如以下命令所示:
CREATE INDEX idex_emp_address
ON Employee (address);
执行上述命令后,我们会得到如下消息窗口,显示Idex_emp_address已成功创建。
注意:有时,命令优化器不使用索引。
正如我们在下面的例子中,下面的命令用于识别地址为Boston的员工:
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 Drop Index部分,我们学习了以下主题:
- 我们了解PostgreSQL drop Index命令,它用于删除特定表的索引。
相关文章:
- [PostgreSQL教程]PostgreSQL教程-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL特性-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL版本-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL语法-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL创建数据库-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL选择数据库-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL删除/删除数据库-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL创建表-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL删除/删除表-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL显示表-PostgreSQL教程|
相关推荐:
- [PostgreSQL教程]PostgreSQL与SQLite-PostgreSQL教程|
- [PostgreSQL教程]MongoDB与PostgreSQL-PostgreSQL教程|
- [PostgreSQL教程]psqlcommands-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLDate&TimeFunction-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLFunctions-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLMulti-columnIndexes-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL禁用触发器-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL左连接-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLANDCondition-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL获取子句-PostgreSQL教程|
- PostgreSQL与SQLite-PostgreSQL教程|
- PostgreSQL与Oracle-PostgreSQL教程|
- PostgreSQL与MariaDB-PostgreSQL教程|
- PostgreSQL与SQLServer-PostgreSQL教程|
- MongoDB与PostgreSQL-PostgreSQL教程|
- PostgreSQLEXCEPT-PostgreSQL教程|
- PostgreSQLINTERSECT-PostgreSQL教程|
- PostgreSQLUnion-PostgreSQL教程|
- psqlcommands-PostgreSQL教程|
- PostgreSQLDate&TimeFunction-PostgreSQL教程|
- PostgreSQL删除触发器-PostgreSQL教程|
- PostgreSQLOrderby子句-PostgreSQL教程|
- PostgreSQL与SQLite-PostgreSQL教程|
- PostgreSQLINTERSECT-PostgreSQL教程|
- PostgreSQLAlias-PostgreSQL教程|
- PostgreSQLNot-NullConstraint-PostgreSQL教程|
- PostgreSQL与Oracle-PostgreSQL教程|
- PostgreSQL与MariaDB-PostgreSQL教程|
- MongoDB与PostgreSQL-PostgreSQL教程|
- PostgreSQLUnion-PostgreSQL教程|