您可以创建索引并定义前缀长度,因此索引将只存储来自每个列值的第一个起始符号。在MySQL中如下所示:
CREATE INDEX table_idx ON emp(last_name(8));在Oracle中,是否有其他方法可以做到这一点呢?
发布于 2012-12-08 17:39:39
您可以在表达式上创建索引(在MySQL中不能这样做):
CREATE INDEX table_idx ON emp(substr(last_name,1,8));但是,除非在where子句中也使用这个表达式,否则不会有任何帮助。
where substr(last_name,1,8) = 'foobar'在MySQL中,没有对整个值进行索引的索引的具体用法是什么?
发布于 2012-12-12 08:13:51
我发现有一些特殊的"Oracle文本“索引可以提高通配符查询的性能。这样的索引构造需要更多的工作,但仍然是创建前缀索引的一种方法:
http://docs.oracle.com/cd/B28359_01/text.111/b 28303/ind.htm#i 1007102
https://dba.stackexchange.com/questions/30032
复制相似问题