2017-05-31 65 views
0

我有2个表 - 一个有100万条记录,另一个有40000条记录。utl_match比较很多记录

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

的事情是,这个过程是非常缓慢的

我需要 优化此过程

为表A(SELECT名字||”“||姓氏从员工的全名) 环

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

dbms_output.put_line(num_coincidencias); end loop;

回答

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