↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 7.1 / 7.0
历史版本PostgreSQL 7.1 已于 2006 年 4 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页。

7.8. 部分索引 #

作者

这出自 Paul M. Aoki()于 1998-08-11 在邮件列表上对某个问题的回复。

注意

PostgreSQL 目前并不支持部分索引,但它的前身 Postgres 曾经支持过,而且大部分代码仍然保留着。我们希望有朝一日能恢复对这个特性的支持。

部分索引是建立在表的一个子集上的索引;这个子集由一个谓词定义。Postgres 曾支持带任意谓词的部分索引。我相信 IBM 的 DB2 for AS/400 支持使用单子句谓词的部分索引。

部分索引的主要动机是:如果你提出的所有能够有利可图地使用索引的查询都落在某个特定范围内,那为什么要对整个表建索引、承担随之而来的空间/时间开销呢? (还有其他一些原因;细节参见 Stonebraker, M, 1989b。)

构建、更新和查询部分索引的机制并不算太糟。麻烦的部分在于索引选择(我该建哪些索引?)和查询优化(我该用哪些索引?);也就是那些涉及判断哪些谓词能以某种有用的方式匹配工作负载/查询的部分。对于熟悉数据库理论的人来说,这些问题基本上与相应的物化视图问题类似,只是代价参数和公式不同。对于标准的有序 SQL 类型,这些问题在一般情况下就已经是难题;而对于黑盒扩展类型则是超级难题,因为选择率估计技术还太粗糙。

更多信息请参阅 Stonebraker, M, 1989b、 Olson, 1993 和 Seshardri, 1995 。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。