У меня есть условие where where в Oracle, чтобы проверить имена, похожие на заданное значение, оно возвращает правильные результаты, однако оно работает очень медленно. Есть ли более эффективный способ выполнить это условие? Благодарю.Медленное выполнение Oracle
AND
(P5_ORGN_NAME IS NULL OR
(D.ORGANIZATION_NAME LIKE '' || upper(P5_ORGN_NAME) || '%' OR D.FORMATTED_ORGANIZATION_NAME like
'' || local.pkg.orgname_format(upper(P5_ORGN_NAME)) || '%')
)
Вы посмотрели план выполнения? Что он сказал? – nvoigt
Первое, что вы хотите посмотреть, это избавиться от этого вызова 'local.pkg.orgname_format (upper (P5_ORGN_NAME))' из предложения WHERE. Вызов PL/SQL в предложении WHERE часто является убийцей производительности. –
запустите план объяснения, чтобы узнать, что происходит. Если вы ДОЛЖНЫ использовать эту функцию orgname_format, посмотрите на функциональный индекс. – OldProgrammer