哪些数据库可以创建基于函数的索引?

时间:2010-08-04 07:44:44

标签: database indexing

我知道,Oracle中存在这种类型的索引。 MySQL上的旧版本无法创建基于函数的索引(谢谢,谷歌)。和新版本?如何使用PostgreSQL,SQL Server等?

3 个答案:

答案 0 :(得分:2)

PostgreSQL可以在表达式上创建索引,包括函数:Indexes on Expressions

答案 1 :(得分:2)

我不知道oracle的内部细节,但是postgres可以在表达式上创建索引,这可以是一个函数,from

  

索引字段可以是表达式   根据一个或多个值计算   表行的更多列。这个   功能可以用来获得快速   基于某些人访问数据   转换基本数据。对于   例如,计算的索引   upper(col)将允许该条款   WHERE upper(col)='JIM'使用   索引。

编辑: MySQL似乎仍在伪造这一点,详见virtual columns。还有一些讨论here。似乎不太活跃。

DB2做it

MS SQL无法做到,但使用计算列可以产生类似的效果;见discussion

答案 2 :(得分:1)

如果数据库支持插入和更新触发器,则可以模拟基于函数的索引。

添加一个包含函数值的列,并为该列添加索引。然后让您的触发器更新包含函数值的列。您的查询必须更改,将function(params)替换为function_col