0

我有 2 张表 - 一张有 100 万条记录,另一张有 40000 条记录。

如果另一个表上有类似的字符串,我需要比较表中的每条记录。

问题是这个过程很慢

我需要优化这个程序

for tablea in (select first_name||' '||last_name as fullname from employee ) 循环

SELECT COUNT(*) INTO num_coincidencias FROM table b WHERE utl_match.jaro_winkler_similarity(b.name ,tablea .fullname) > 98

dbms_output.put_line(num_coincidencias); 结束循环;

4

1 回答 1

0

你确实意识到你正在做 400 亿次比较?无论您使用哪种方法,这都需要很长时间。

将其转换为 SQL 语句将消除上下文切换,我不知道您的计算机是否有资源在单个 SQL 语句中完成所有操作:

  SELECT COUNT (*) c, a.first_name || ' ' || a.last_name full_name
    FROM employee a CROSS JOIN tableb b
   WHERE UTL_MATCH.jaro_winkler_similarity (b.first_name, a.first_name || a.last_name) > 98
GROUP BY a.first_name || ' ' || a.last_name
于 2017-05-31T22:49:29.963 回答