utl_match сравнивает много записей

У меня есть 2 таблицы - одна с 1 миллионом записей, а другая с 40000 записями.

Мне нужно сравнить для каждой записи в таблице, если есть аналогичная строка в другой таблице.

дело в том, что эта процедура очень медленная

Мне нужно оптимизировать эту процедуру

для таблицы в цикле (выберите first_name||' '||last_name в качестве полного имени сотрудника)

ВЫБЕРИТЕ COUNT(*) INTO num_coincidencias ИЗ таблицы b ГДЕ utl_match.jaro_winkler_simility(b.name,tablea .fullname) > 98

DBMS_OUTPUT.PUT_LINE (num_coincidencias); концевой цикл;

1 ответ

Вы понимаете, что делаете 40 миллиардов сравнений? Это займет много времени, независимо от того, какой метод вы используете.

Превращение этого в оператор 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
Другие вопросы по тегам