灵活索引的数据库?

时间:2010-08-29 20:18:49

标签: database indexing database-indexes

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

  

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

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

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

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

3 个答案:

答案 0 :(得分:1)

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

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

我相信在sql server中你可以创建一个计算列和索引。

答案 1 :(得分:0)

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

有条件一如既往,但主要围绕决定论(可能是普遍的)

SQL Server 2008+已过滤索引。

AFAIK,没有特殊用语。他们只是索引。

答案 2 :(得分:-1)

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

不幸的是,我不知道任何特殊用语。