具有灵活索引的数据库?
-
02-10-2019 - |
题
Wikipedia形式:http://en.wikipedia.org/wiki/index_(Database)
一些数据库通过允许在函数或表达式上创建索引来扩展索引的功能。例如,可以在upper(last_name)上创建一个索引,该索引只能存储Last_name字段的上情况版本中的索引。有时支持的另一个选项是使用“过滤”索引,其中仅针对满足某些条件表达式的记录创建索引条目。灵活性的另一个方面是允许对用户定义的功能进行索引,以及由各种内置功能形成的表达式。
那些支持灵活索引的数据库是什么:
- 在计算列上,例如:(Col1 + Col2) * 100
- 过滤索引。
- 索引用户定义的功能。
此功能的术语是什么?
解决方案
在Oracle中,它们称为基于函数的索引。
对于过滤,您可能会很棘手,并创建一个函数,如果过滤器匹配或null,则返回值。 nulls不存储在BTREE索引中,因此该索引基本上是过滤的。您只需要确保在查询中使用相同的功能。
我相信在SQL Server中,您可以创建一个计算的列并索引。
其他提示
SQL Server 2000+(至少)支持基于功能的列和计算列的索引。可以使用功能上的索引视图来复制有关功能的索引。
在某些条件下,但主要是围绕确定论(这可能是普遍的)
SQL Server 2008+已过滤索引。
Afaik,没有特殊的术语。他们只是索引。
据我所知,所有主要RDBS都支持此功能。我亲自在MySQL和PostgreSQL上使用了它,但是如果MSSQL和Oracle中没有使用,我会感到震惊。
不幸的是,我对此不知道任何特殊术语。
不隶属于 StackOverflow