У меня есть таблица, в которой перечислены два подключенных значения, ID и TaxNumber (TIN), которые выглядят примерно так:
IDTINMap
ID | TIN
-------------------------
1234567890 | 654321
-------------------------
3456321467 | 986321
-------------------------
8764932312 | 245234
Идентификатор может отображаться на несколько TIN и TIN может отображаться на несколько идентификаторов, но существует ограничение на уникальность таблицы для идентификатора, пары TIN.
Этот список не полный, и в таблице около 8000 строк. У меня есть другая таблица, IDListing
, которая содержит метаданные для примерно 9 миллионов идентификаторов, включая имя, адрес, город, штат, почтовый индекс и идентификатор.
Я пытаюсь создать расширенный идентификатор - Карта ИНН. В настоящее время я делаю это, сначала соединяя таблицу IDTINMap
с IDListing
в поле ID, что дает нечто похожее на CTE, который я сейчас назову Step1
:
ID | TIN | Name | Address | City | State | Zip
------------------------------------------------------------------------------------------------
1234567890 | 654321 | John Doe | 123 Easy St | Seattle | WA | 65432
------------------------------------------------------------------------------------------------
3456321467 | 986321 | Tyler Toe | 874 W 84th Ave| New York | NY | 48392
------------------------------------------------------------------------------------------------
8764932312 | 245234 | Jane Poe | 984 Oak Street|San Francisco | CA | 12345
Затем я снова через go и присоединяюсь к таблице IDListing
, присоединяясь к Step1
по адресу, городу, штату, почтовому индексу и имени, которые все равны. Я знаю, что мог бы сделать что-то более сложное, например нечеткое сопоставление, но сейчас мы просто смотрим на точные совпадения. В соединении я сохраняю идентификатор на шаге 1 как «ReferenceID», сохраняю TIN, а затем получаю другой столбец со всеми соответствующими идентификаторами. Я не храню информацию об адресе / городе / штате / почтовом индексе, только три цифры.
Тогда я могу go вернуться и вставить все отдельные пары в финальный стол.
Я пробовал это с помощью запроса, и он работает и дает мне желаемый результат. Однако запрос медленнее, чем хотелось бы. Я привык соединять строки, которые я проиндексировал (например, ID или TIN), но это медленно для всех полей адреса. Есть ли хороший способ улучшить это? Присоединение к каждому полю индивидуально быстрее, чем присоединение к CONCAT () всех полей (это я пробовал). Мне просто интересно, есть ли другой способ, которым я могу оптимизировать это.