首页 文章

utl_match比较许多记录

提问于
浏览
0

我有2个表 - 一个有100万条记录,另一个有40000条记录 .

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

问题是这个程序很慢

我需要优化这个程序

for tablea in(select first_name ||''|| last_name as employee 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);结束循环;

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
    

相关问题