PostgreSQL
上一页 第七章. 索引和键字 下一页

部分索引

作者:这是从 Paul M. Aoki 1998-08-11的在 e-mail 列表中回答的问题中摘下来的。
部分索引(partial index)是建立在一个表的子集上的索引;该子集是用断言(谓语)定义的。Postgres支持带有任意断言(谓语)的部分索引。我相信 IBM 用于 as/400 的 DB2 用单一子句的断言支持部分索引。

部分索引的主要动机是:如果你发出的所有查询都可以从落在某个范围内的索引中获益,我们为什么要对整个表建立一个索引,而带来相关的更多的空间/时间开销呢?(还有其他原因;参阅 Stonebraker, M, 1989b 获取更多细节。)

创建,更新和查询部分索引的机制不算太差。麻烦的部分是索引的选择(我该建立哪个索引?)和查询优化(我该使用哪个索引?);也就是说,涉及到决定什么样的断言可以有效地匹配工作负荷/查询的那部分。对那些深入数据库理论的人而言,这个问题基本上类似于对应的物化的视图问题,虽然有不同的开销参数和公式。通常而言,这些问题对标准的SQL 类型是很难的问题;对黑盒扩展类型而言,这些问题是超级难的问题,因为选择性评估理论太原始了。

参考 Stonebraker, M, 1989bOlson, 1993Seshardri, 1995 获取更多信息。


上一页 首页 下一页
索引和键字 开头 数组