У меня есть таблица с идентификаторами и строками, и мне нужно иметь возможность правильно индексировать для поиска конца строк.В настоящее время мы обрабатываем это, копируя информацию в другую таблицу, переворачивая каждую строку и индексируя ее нормально.То, что я хотел бы сделать, это использовать какой-то индекс, который позволяет осуществлять поиск в обратном направлении.
Пример
Data:
F7421kFSD1234
d7421kFSD1235
F7541kFSD1236
d7421kFSD1234
F7421kFSD1235
b8765kFSD1235
d7421kFSD1234
То, как наши пользователи обычно вводят свой поиск, является чем-то вроде...
*1234* 1008 *
Перевернув строки (и строку поиска: 4321 *), я мог бы найти то, что искал, без полного сканирования всей таблицы.Мой вопрос: лучший способ сделать это - сделать второй стол?
Есть ли способ отменить индекс?Я попробовал подобный индекс ...
create index REVERSE_STR_IDX on TABLE(STRING) REVERSE;
, но оракул, похоже, не использует его в соответствии с объяснительным планом.
Заранее спасибо за помощь.
Обновление:
У меня возникла проблема с неправильным обращением символов Юникода.Решением этой проблемы было наложение их.
Пример:
select REVERSE(cast(string AS varchar2(2000)))
from tbl
where id = 1