2009-10-08 55 views
1

如果我在VARCHAR2列的Oracle中創建反向索引,是否還需要反轉WHERE子句中使用的值?Oracle反向索引和查詢

CREATE INDEX myindex ON myTable(name) REVERSE; 

SELECT name FROM myTable WHERE name='Peter'; 

SELECT name FROM myTable WHERE name='reteP'; 

回答

2

您需要它來改善數據分佈。

就像許多電影名稱都以The開頭,這會降低索引性能。

你不需要扭轉的條件:Oracle會自動爲你做。

但是,你不能這樣做範圍查詢了:

SELECT name FROM myTable WHERE name BETWEEN 'A' AND 'C' 

將導致全掃描

+0

謝謝 - 這就是我的想法。 – Gandalf

0

不,你不 - 看到Burleson爲全瘦。

5

您正在搜索的值是「彼得」。如果您搜索'reteP',您將返回零行(或至少不是您要查找的行)。