Oracle PLSQL — несколько ПОХОЖИХ критериев с подстановочными знаками

#oracle #full-text-search #query-optimization #sql-like

#Oracle #полнотекстовый поиск #оптимизация запросов #sql-подобный

Вопрос:

У меня довольно сложная таблица данных, но я сократил ее для более простого объяснения того, чего я пытаюсь достичь. Цель запроса — вернуть ID_NUMBER и TEXT_FIELD, где запись содержит «John» и «Jane» в любом месте поля, независимо от позиции или порядка.

 ID_Number   Text_Field
1000        John Doe
2000        Jane Doe
3000        John and Jane Doe
4000        Doe John Jane
  

Я могу легко запросить, чтобы найти все текстовые поля, в которых указано «John», используя LIKE ‘%JOHN%’, и я также могу запросить поиск «John» или «Jane» в любой части текстового поля, используя LIKE ‘%JOHN%’ И LIKE ‘%JANE%’ но, похоже, обработка запроса занимает очень много времени.

Есть ли более оптимальный способ записать эту логику в операторе WHERE?

Комментарии:

1. Использование операции LIKE с подстановочным знаком на каждом конце всегда является полным сканированием таблицы. Более эффективный подход заключается в использовании Oracle Text, который позволяет нам создавать специальные индексы, оптимизированные для поиска слов в произвольном тексте. Требуется администратор базы данных для установки некоторых дополнительных библиотек и предоставления грантов. Узнайте больше .