📅  最后修改于: 2020-11-30 09:34:52             🧑  作者: Mango
在本节中,我们将了解PostgreSQL创建索引的工作以及创建索引命令的示例。
在PostgreSQL中,“创建索引”命令用于通过定义索引名称以及在其上创建索引的表或列名称来创建新索引。
创建索引命令的语法如下:
CREATE INDEX index_name ON table_name [USING method]
(
column_name [ASC | DESC] [NULLS {FIRST | LAST}],
...
);
在上面的语法中,我们使用了以下参数,如下表所示:
Parameters | Description |
---|---|
Index_name |
|
Table_name |
|
Using[method] |
|
Column_name |
|
注意:如果要确定命令是否使用索引,可以使用EXPLAIN命令。
让我们看一个示例示例,以了解PostgreSQL CREATE Indexes命令的工作。
但是在讨论示例之前,我们将把索引和电话目录类比作为示例的一部分。
为了理解索引和电话目录类比的实例,我们有以下几种情况:
情况1:如果电话簿按字母顺序排列。
情况2:如果电话簿不是按字母顺序排列的。
注意:
与电话号码簿平行的是,可以按照特定的顺序准备表中存储的数据,以加快搜索速度;因此,我们使用了索引。
索引可以被视为诸如B-Tree之类的数据结构,它以进一步写入和存储以保持该数据为代价,提高了对表进行数据检索的速度。
我们将使用在PostgreSQL教程的前面部分中创建的Person_detalis表。
Person_deatils表包含各种列,例如id,Person_name和Mobile_number,如以下屏幕快照所示:
在以下命令中,我们将尝试识别Mobile_number为(444)-333-1234的人员名称:
SELECT * FROM Person_details
WHERE Mobile_number = '{(444)-333-1234}';
输出量
在执行上面的命令,我们会得到下面的输出,我们成功地找出那个人的名字,其手机号码为(444)-333-1234,这是麦克·泰勒。
可以理解,数据库必须扫描完整的Person_details表以标识Person_name,因为Mobile_number列没有索引。
在这里,我们可以使用EXPLAIN命令查看查询计划,如下面的命令所示:
EXPLAIN SELECT *
FROM Person_details
WHERE Mobile_number = '{(444)-333-1234}';
输出量
执行上述命令后,我们将获得以下输出,该输出显示Person_details表的查询计划。
现在创建一个新索引,借助以下命令,从“人员”详细信息表的Moblie_phone列中获取值:
CREATE INDEX idx_Person_details_Mobile
ON Person_details(Mobile_number);
输出量
执行上述命令后,我们将收到以下消息: idx_Person_details_Mobile索引已成功创建。
如果我们要标识包含查找索引的数据库引擎,则可以再次使用上面的Explain命令,如以下命令所示:
EXPLAIN SELECT *
FROM Person_details
WHERE Mobile_number = '{(444)-333-1234}';
输出量
执行上述命令后,我们将获得以下消息,其中显示了Person_details表的查询计划。
在PostgreSQL中,我们具有Single-index列索引,它可以帮助我们增强PostgreSQL索引的性能。
在“ PostgreSQL创建索引”部分中,我们学习了以下主题: