Я выполняю запрос в SQL Server, где мне нужно объединить две таблицы в одну, где поле полного имени соответствует полю частичного имени в другой после удаления апострофов. Для примера кода соединение происходит так:
from [Data1]
right join [Data2]
on replace([Data2].[PartialName], '''','')=Substring([Data1].[FullName],1,1+LEN(replace([Data2].[PartialName], '''','')))
И это работает. Но это займет то, что было бы выполнением за 10 секунд, если бы мы просто использовали где name = name и заставило бы это занять около 20 минут. Это довольно неприемлемо с точки зрения времени выполнения, поэтому мне было интересно, есть ли у кого-нибудь более эффективные альтернативы для рассмотрения.
Между прочим, данные 1 содержат около 800 строк, а данные 2 - около 1,6 миллиона, если это уместно.
Редактировать: мне сказали, что мне нужно дать немного больше описательной информации. В основном в этом примере Data1 представляет собой таблицу из внешнего источника, которая содержит поле имени [FullName], которое содержит полные имена людей в форме «Фамилия, Имя (и)) с удаленными апострофами (для Например, имя O'Neil будет просто ONeil).
Так что примером будет «ONeil, Сара Коннер»
Данные2 содержат поле имени, имеющее имена в форме «Фамилия, Имя». Отчество опускается, а апострофы целы. Так, например, «О'Нил, Сара»
Эти таблицы должны быть объединены вместе в их полях имен, следовательно, логика выше.