4

形成维基百科:http://en.wikipedia.org/wiki/Index_(database)

一些数据库通过允许在函数或表达式上创建索引来扩展索引的功能。例如,可以在 upper(last_name) 上创建一个索引,它只会在索引中存储 last_name 字段的大写版本。有时支持的另一个选项是使用“过滤”索引,其中仅为满足某些条件表达式的记录创建索引条目。灵活性的另一个方面是允许对用户定义的函数以及由各种内置函数形成的表达式进行索引。

那些支持灵活索引的数据库是什么,可以是:

  • 在计算列上,如:(col1 + col2) * 100
  • 过滤索引。
  • 索引用户定义的函数。

以及此功能的已知术语是什么?

4

3 回答 3

1

在 oracle 中,它们被称为基于函数的索引。

对于过滤,您可能会很棘手,并创建一个函数,如果过滤器匹配则返回值,否则返回 null。空值不存储在 btree 索引中,因此索引本质上是过滤的。您只需确保在查询中使用相同的函数。

我相信在 sql server 中,您可以创建一个计算列并为其编制索引。

于 2010-08-29T20:26:51.773 回答
0

SQL Server 2000+(至少)支持基于函数的列和计算列的索引。可以使用函数的索引视图来复制函数的索引。

与往常一样有条件,但主要围绕确定性(这可能是普遍的)

SQL Server 2008+ 具有过滤索引。

AFAIK,没有特殊术语。它们只是索引。

于 2010-08-29T21:04:03.307 回答
-1

据我所知,所有主要的 RDBS 都支持此功能。我个人在 MySQL 和 PostgreSQL 上使用过它,但如果它在 MSSQL 和 Oracle 中不可用,我会感到震惊。

不幸的是,我不知道有什么特殊的术语。

于 2010-08-29T20:26:32.587 回答