2017-05-31 99 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