为了更好地理解 PostgreSQL 中索引背后的概念,假设您需要在电话簿上查找 Raju Kumar 的电话号码。了解电话簿上的姓名按字母顺序排列后,您首先查找姓氏为 Kumar 的页面,然后查找名字 Raju,最后得到他的电话号码。
假设电话簿上的名字不是按字母顺序排列的,你必须翻阅所有页面,检查每个名字,直到找到 Raju Kumar 的电话号码。这称为顺序扫描,您可以遍历所有条目,直到找到您要查找的条目。
与电话簿类似,表中存储的数据应按特定顺序组织,以加快各种搜索速度。这就是索引发挥作用的原因。
在PostgreSQL的,创建索引语句来定义表的新索引。
用法: CREATE INDEX index_name ON table_name [USING method] ( column_name [ASC | DESC] [NULLS {FIRST | LAST }], ... );
让我们分析以上语法:
- 首先,在后面指定索引名称创建索引条款。索引名称应该有意义且易于 memory 。
- 其次,指定索引所属的表的名称。
- 三、指定索引方法如二叉树,散列,要旨,专家,杜松子酒和布林. PostgreSQL 使用二叉树默认情况下。
- 第四,列出一个或多个要存储在索引中的列。
- 这个ASC和DESC指定排序顺序。 ASC 是默认设置。
- NULL 优先或者最后一个空指定之前或之后的空值排序非空。这NULL 优先是默认值,当DESC被指定并且最后一个空是默认值,当DESC未指定。
出于演示目的,我们将使用地址表从样本数据库为演示。
例:
以下查询查找电话号码为223664661973:
SELECT * FROM address WHERE phone = '223664661973';
很明显,数据库引擎必须扫描整个地址表来查找地址,因为电话列没有可用的索引。
要显示查询计划,请使用 EXPLAIN 语句,如下所示:
EXPLAIN SELECT * FROM address WHERE phone = '223664661973';
这将导致以下结果:
为值创建索引电话的列地址表,您使用以下语句:
CREATE INDEX idx_address_phone ON address(phone);
现在,如果再次执行查询,您会发现数据库引擎使用索引进行查找:
EXPLAIN SELECT * FROM address WHERE phone = '223664661973';
输出:
相关用法
- PostgreSQL DROP INDEX用法及代码示例
- PostgreSQL CREATE DOMAIN用法及代码示例
- PostgreSQL CREATE TABLE用法及代码示例
- PostgreSQL CREATE SEQUENCE用法及代码示例
- PostgreSQL CREATE SCHEMA用法及代码示例
- PostgreSQL CREATE PROCEDURE用法及代码示例
- PostgreSQL CREATE TRIGGER用法及代码示例
- PostgreSQL CREATE ROLE用法及代码示例
- PostgreSQL CREATE TABLESPACE用法及代码示例
注:本文由纯净天空筛选整理自RajuKumar19大神的英文原创作品 PostgreSQL – CREATE INDEX。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。