Мы пытаемся загрузить данные из Excel в базу данных. Перед загрузкой мы хотели бы предварительно просмотреть данные со счетчиком статуса соответствия (например, нет совпадения, аналогичное совпадение, точное совпадение) при сравнении с нашей базой данных.
Приведенный ниже запрос занимает 3 минуты времени для извлечения информации из базы данных на 100 строк. У нас будет случай, когда пользователь может загрузить более 5K строк данных. Пожалуйста, дайте нам знать ваши предложения по улучшению производительности нижеуказанного запроса.
select IF(
count(distinct ID) <= 0, (
select case when count(ID) > 0 then 'Similar Match' else 'No Match' end as MatchType from masterTable where (
soundex(BarCode) like soundex('12069B0') or soundex(ProductName) like soundex('FreezerZX')
) and (
levenshtein(BarCode,'12069B0') < 3 or (levenshtein(ProductName,'FreezerZX') < 3)
)
),
'Exact Match'
) as MatchType from masterTable where BarCode= '12069B0' and ProductName= 'FreezerZX';
Без простого алгоритма «аналогичного соответствия» я рекомендую отказаться от выполнения всей задачи с компьютером. Человеческий мозг очень хорош в тестах на сходство, так что давайте добавим его в …
Сортируйте данные по столбцу, который вы хотите проверить на наличие дупов или дураков. Отобразите этот список по вертикали. Визуально просмотр списка.
Повторите с REVERSE(col)
, Это определит пары, у которых были радикальные различия в начале строки, но лучше совпадали в конце.
При необходимости повторите для других столбцов.
Других решений пока нет …