Плохая производительность с regexp_like - PullRequest
0 голосов
/ 22 октября 2018

В качестве заголовка я использую Regexp_like в своих SQL-запросах Oracle, но производительность очень плохая.У меня есть следующий код:

SELECT ID, Name, Department, PhoneNumber, Address
FROM DPT.DP_vEmployee --vEmployee is a view
WHERE ID = :p_ID
AND REGEXP_LIKE(upper(Address), upper(:p_Address));

Я заполнил и запустил этот запрос, он вернул почти 6 с для 484 записей.Затем я попытался использовать операцию LIKE для этого случая:

SELECT ID, Name, Department, PhoneNumber, Address
FROM DPT.DP_vEmployee --vEmployee is a view
WHERE ID = :p_ID
AND (upper(address) LIKE upper('%' || :p_address || '%'));

В этом случае результат вернул 1,5 с для 484 записей.Хотя это сильно уменьшает, но это не делает меня удовлетворенным.

Есть ли другое решение, чтобы сделать это быстрее?

Спасибо!

1 Ответ

0 голосов
/ 08 января 2019

вместо использования "upper" для столбца условия и шаблона, попробуйте использовать regexp_like с сопоставлением без учета регистра "i".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...