оракул - могу ли я использовать сдерживать и рядом с гвоздем?Нужно ускорить запрос - PullRequest
0 голосов
/ 17 октября 2018

У нас есть запрос, который занимает 48 минут, чтобы выполнить поиск по клобу.Запрос написан так, как будто он не является столбцом clob и использует содержит и рядом.Этот поиск 3 слов в пределах определенного расстояния слова важен.Мне нужно ускорить это, и я хочу сделать индекс для clob, но не знаю, сработает ли это, и не до конца понимаю, как это сделать.Я обнаружил это у Тома Берлсона http://www.dba -oracle.com / t_clob_search_query.htm ИЛИ https://asktom.oracle.com/pls/apex/asktom.search?tag=oracle-text-contains-search-with-near-is-very-slow, но не могу понять, как это сделать с содержимым и рядом, чтобы включить поиск3 слова на определенном расстоянии друг от друга.

текущий скрипт:

SELECT clob_field 
FROM clob_table 
WHERE contains(clob_field,'NEAR (((QUICK),(FOX),(LAZY)),5)') > 0;

Хотите использовать что-то подобное, если это будет работать как индексация:

SELECT clob_field
FROM clob_table
WHERE contains(dbms_lob.substr(clob_field,'near(((QUICK),(FOX),(LAZY)),5)')) > 0;

Если нет, мне нужно выполнить индексацию, ноЯ не совсем понимаю, как использовать CTXCAT и CONTEXT (https://docs.oracle.com/cd/A91202_01/901_doc/text.901/a90122/ind4.htm).. Мне также не нравится то, что я прочитал здесь, где говорится, что если кто-то использует CTXCAT для индексации сгустка, вы должны использовать CONTEXT или что-то подобноеЭто не может повлиять на другие запросы, которые выполняются в этом поле.

Заранее спасибо!

1 Ответ

0 голосов
/ 26 ноября 2018

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

...