如果我在VARCHAR2列上的Oracle中创建反向索引,是否还需要反转WHERE子句中使用的值?
CREATE INDEX myindex ON myTable(name) REVERSE;
SELECT name FROM myTable WHERE name='Peter';
或
SELECT name FROM myTable WHERE name='reteP';
答案 0 :(得分:5)
您要搜索的值是“彼得”。如果您搜索'reteP',您将返回零行(或至少不是您要查找的行)。
答案 1 :(得分:2)
您需要它来改善数据分发。
就像许多电影名称以The
开头,这会降低索引性能。
您无需撤消条件:Oracle
会自动为您执行此操作。
但是,您不能再进行范围查询了:
SELECT name FROM myTable WHERE name BETWEEN 'A' AND 'C'
将导致完整扫描
答案 2 :(得分:0)
不,你没有 - 看到Burleson完全瘦了。