Настройка производительности PL / SQL для запросов с подстановочными знаками LIKE '%…%'

Мы используем базу данных Oracle 11g.
Как вы можете знать или не знать, если вы используете запрос с подстановочными знаками с "%" перед строкой, индекс столбца не используется и выполняется полное сканирование таблицы .

Похоже, что нет окончательного предложения о том, как улучшить этот тип запроса, но, возможно, вы могли бы поделиться ценной информацией из своего опыта о том, как оптимизировать следующий запрос:

SELECT * 
  FROM myTable 
 WHERE UPPER(CustomerName) like '%ABC%' 
    OR UPPER(IndemnifierOneName) like '%ABC%' 
    OR UPPER(IndemnifierTwoName) like '%ABC%';

... где все 3 столбцы имеют тип varchar2 (100) и ABC - значение входного параметра переменной.

@All предлагает индекс CONTEX , обратите внимание, что мои данные получают обновляется в любое время суток каждый день, и этот индекс требует повторной синхронизации, поэтому он не хороший вариант для таблицы из 1,5 миллиона строк , извините.

PS Я буду голосовать за каждый ответ, поэтому, пожалуйста, продолжайте их получать.

15
задан Грозный 6 June 2011 в 10:54
поделиться