PG中的where索引、部分索引、局部索引、过滤索引

0    334    3

Tags:

👉 本文共约2131个字,系统预计阅读时间或需9分钟。

简介

部分索引也称局部索引,是建立在关系表上得子集,而该子集是由一个条件表达式定义的(叫做部分索引的谓词)。该索引只包含表中那些满足这个谓词的行。

部分索引得有点在于提高数据插入和更新的效率,减少维护成本,因为部分索引不是在所有情况下都需更新索引,只有符合部分索引条件表达式的数据才会更新索引。另外部分索引比普通索引要小,减少索引存储空间。

部分索引主要在排除公共值、排除不感兴趣的值方面比较有用,比如IP网段排除等。

在 PostgreSQL 中,"WHERE" 索引是一种特殊类型的索引,它能够针对查询中的特定条件进行优化。它可以有效地过滤出满足 WHERE 子句中条件的行,从而提高查询性能。

通常情况下,索引是根据表中的列值来构建的,它可以加速按照特定列进行查询和排序。然而,"WHERE" 索引是一种更特殊的索引类型,它只包含满足特定 WHERE 子句条件的行的引用。

以下是关于 "WHERE" 索引的一些要点:

  1. 索引条件:"WHERE" 索引的目的是优化特定的查询条件。只有在满足 WHERE 子句中的条件时,该索引才会被使用。因此,索引的选择和设计应该根据实际查询中的条件进行。
  2. 查询优化:"WHERE" 索引能够帮助优化查询性能,尤其是在过滤行数较多的查询中。通过仅检索满足 WHERE 子句条件的行,可以减少磁盘IO和CPU消耗,从而提高查询的执行速度。
  3. 索引大小:由于 "WHERE" 索引只包含满足特定条件的行的引用,而非整个表的行,因此它的大小可能相对较小。这有助于减少存储需求并提高缓存效果。
  4. 维护开销:与其他索引类型一样,"WHERE" 索引也需要维护,包括插入、更新和删除操作。当表中的数据发生变化时,相关的 "WHERE" 索引也需要相应地更新。因此,在设计和使用 "WHERE" 索引时需要注意维护开销的影响。

需要注意的是,创建和使用 "WHERE" 索引需要仔细考虑查询的条件和频率。它适用于那些频繁使用特定条件进行过滤的查询。对于其他类型的查询,可能需要考虑不同类型的索引或综合考虑多个列的索引。

在 PostgreSQL 中,可以通过创建普通索引并指定合适的 WHERE 子句条件来实现 "WHERE" 索引的效果。例如:

上述示例中的 idx_myindex 是一个 "WHERE" 索引,它只包含满足 condition 条件的行的引用。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复