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