1

作为标题,我在我的 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));

我填写并运行了这个查询,它返回了将近 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 || '%'));

在这种情况下,结果为 484 条记录返回 1.5 秒。虽然它减少了很多,但它并不让我满意。

有没有其他解决方案可以让它更快?

谢谢!

4

1 回答 1

0

而不是在条件列和模式上使用“upper”,您是否尝试使用 regexp_like 与“i”不区分大小写的匹配。

于 2019-01-08T08:23:29.460 回答