PostgreSQL教程

PostgreSQL 表达式索引

在本节中,我们将了解表达式的索引控制,这有助于我们增强命令的性能

什么是表达式上的PostgreSQL索引?

通常,创建索引引用表的一个或多个列。但是我们也可以基于表达式创建一个索引,其中包括表列,并且这些情况被称为表达式索引。
基于功能的索引被称为表达式索引。

PostgreSQL表达式表达式索引

用于在表达式上创建索引,我们有以下插图:
CREATE INDEX index_name 
ON table_name (expression);
在上面的语法中,我们使用了以下参数,如下表所示:
参数 说明
index_name index_name用于定义索引名称,并在CREATE INDEX命令之后写入。
table_name 它将创建一个包含表名称的表列的表达式。
expression 当我们指定索引表达式时,该表达式可以在SQL命令的Order BY或WHERE子句中指定。
注意:
由于PostgreSQL必须评估每一行的表达式,因此维护表达式索引非常昂贵。 因此,如果检索速度比插入和更新速度更为关键,我们可以使用表达式的索引。

关于表达式的PostgreSQL索引的示例

让我们看一个示例示例,以了解 PostgreSQL表达式的索引的工作。
我们正在使用 Employee 表,该表是在 PostgreSQL教程。
如果我们想查看 员工 表中的数据,我们将使用 SELECT 命令,如以下命令所示:
Select * from employee;
输出
执行上述命令后,我们将获得以下结果,其中包含各个列,例如 emp_id,emp_fname,emp_lname,位置,以及加入日期,如以下屏幕截图所示:
PostgreSQL表达式索引"员工"表具有为 emp_fname 列定义的 B树索引。以下命令用于标识 emp_lname 为Brown的那些员工:
SELECT emp_id, emp_fname,emp_lname 
FROM employee
WHERE emp_lname = 'Brown';
输出
执行上述命令后,我们将获得以下输出,其中显示了员工,其 emp_lname 是棕色。
PostgreSQL表达式索引
然后,我们实现以下命令,其中PostgreSQL通过 EXPLAIN 命令使用 idx_emp_lname 索引:
EXPLAIN 
SELECT emp_id, emp_fname,emp_lname 
FROM employee
WHERE(emp_lname) = 'Brown';
输出
执行上述命令后,我们将获得以下输出: PostgreSQL优化器将 Idx_emp_lname 索引用于员工 表。
PostgreSQL表达式索引
在以下命令中,我们将尝试识别大写中的 emp_lname 为 Brown 的那些员工。但是PostgreSQL无法使用索引进行查找,如下所示:
EXPLAIN 
SELECT emp_id, emp_fname,emp_lname 
FROM employee
WHERE UPPER(emp_lname) ='Brown';
输出
执行上述命令后,我们将获得以下消息,其中显示了员工表的查询计划。
PostgreSQL Index on Expression
要增强上述命令,我们可以指定 index表达式, ,如以下命令所示:
CREATE INDEX idex_ic_emp_lname
ON employee(UPPER(emp_lname)); 
输出
执行上述命令后,已成功创建 idex_ic_emp_lname 索引。
表达式上的PostgreSQL索引
我们现在将实现以下命令,该命令可帮助我们根据 emp_lname识别员工(不区分大小写),并在表达式上使用索引,如下面的命令所示:
EXPLAIN 
SELECT emp_id, emp_fname,emp_lname 
FROM employee
WHERE UPPER(emp_lname) ='Brown';
输出
执行上述命令后,我们将得到以下结果:
表达式的PostgreSQL索引

概述

在 PostgreSQL的表达式索引部分中,学习了以下主题:
我们已经了解到 PostgreSQL表达式上的索引用于增强查询,该查询包含一个包含表列的表达式。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4