Tyl*_*ith 1 oracle indexing reverse oracle10g
我有一个具有ID和字符串的表,我需要能够正确索引以搜索字符串的结尾.我们当前如何处理它是将信息复制到另一个表并反转每个字符串并正常索引它.我想做的是使用某种允许反向搜索的索引.
例
Data:
F7421kFSD1234
d7421kFSD1235
F7541kFSD1236
d7421kFSD1234
F7421kFSD1235
b8765kFSD1235
d7421kFSD1234
Run Code Online (Sandbox Code Playgroud)
我们的用户通常输入他们的搜索方式是......
*1234
通过反转字符串(以及搜索字符串:4321*),我可以找到我要查找的内容,而无需完全扫描整个表格.我的问题是:制作第二张桌子是最好的方法吗?
有没有办法扭转指数?我试过像这样的索引......
create index REVERSE_STR_IDX on TABLE(STRING) REVERSE;
Run Code Online (Sandbox Code Playgroud)
但根据解释计划,oracle似乎没有使用它.
在此先感谢您的帮助.
更新:
我确实遇到了unicode字符无法正确反转的问题.对此的解决方案是铸造它们.
例:
select REVERSE(cast(string AS varchar2(2000)))
from tbl
where id = 1
Run Code Online (Sandbox Code Playgroud)
有一个神话,可以使用反向键索引,但是,我从未见过这一点.
我会尝试一个基于"手动"功能的索引.
CREATE INDEX REVERSE_STR_IDX on TBL(reverse(string));
SELECT *
FROM TBL
WHERE reverse(string) LIKE '4321%';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1667 次 |
| 最近记录: |