我在Oracle中有这个where子句条件来检查与给定值相似的名称,但它返回正确的结果,但运行速度非常慢。有没有更有效的方法来执行这种情况?谢谢。Slow 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
您想要查看的第一件事是从WHERE子句中删除此调用'local.pkg.orgnameformat(upper(P5_ORGN_NAME))'。在WHERE子句中调用PL/SQL通常是性能杀手。 –
运行解释计划,看看发生了什么。如果您必须使用此orgname_format函数,请查看基于函数的索引。 – OldProgrammer