Oracle UTL_MATCH.Jaro_wrinkler 函数性能

问题描述 投票:0回答:1

我需要将一个结果集中的数百万条记录与另一个包含 50000 条记录的结果集进行比较。 所以编写了一段Plsql代码来匹配两个记录集中的字符串。这个函数的性能非常慢。

我们在 Oracle plsql 中编写了类似的代码。

for rec in cur loop for rec1 in cur1 loop utl_match.jaro_wrinkler_similarity(rec.string1,rec1.string2);end loop;end loop;

请帮助我们如何提高以下比赛的表现。

for rec in cur loop for rec1 in cur1 looputl_match.jaro_wrinkler_similarity(rec.string1,rec1.string2);end loop;end loop;
oracle plsql
1个回答
0
投票

我不认为它可以;请注意,您正在生成 百万行 x 50.000 行的笛卡尔积。只是需要时间。

(顺便说一句,你发布的代码是无效的;你必须用你计算的值做某事 - 将其存储到某个变量中,显示它......无论如何。它不能只是在那里,独自一人) .

但是,如果您解释了您到底在寻找什么,也许可以有比计算相似度不同(更快?)的选择。

例如,如果您想知道一个字符串是否存在于另一个字符串中,您可以使用

instr(first_string, second_string) > 0

另一个选项是

soundex

 功能,例如
... where soundex(first_string) = soundex(second_string)

可能还有其他选项,但是 - 正如我所说 - 您必须提供有关该问题的更多信息,并用一些示例数据和规则进行说明,必须应用这些数据和规则才能获得所需的结果。

© www.soinside.com 2019 - 2024. All rights reserved.