作为标题,我在oracle SQL查询中使用Regexp_like,但是性能非常糟糕。 我有以下代码:
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));
我填写并运行了此查询,它返回了近6s的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 || '%'));
在这种情况下,结果返回484条记录的1.5秒。虽然它减少了很多,但并不能令我满意。
还有其他解决方案可以使它更快吗?
谢谢!
答案 0 :(得分:0)
不是在条件列和模式上使用“ upper”,而是尝试将regexp_like与“ i”不区分大小写的匹配一起使用。