Кажется, вы пытаетесь настроить внешний ключ из одной таблицы в другую через строковое поле. Правильно ли я?
Решение Postgresql Если это так, то создание явного внешнего ключа (и связанного с ним индекса) в postgresql окажется первым решением, которое стоит попробовать, хотя он уверен, что с сотнямимиллионов строк в одну сторону и миллиардов в другую, вам понадобится довольно сильная настройка, лежащая в основе вашей базы данных postgresql для построения индекса. После этого запросы должны быть разумными.
решение эластичного поиска Чтобы ответить на ваш более глобальный вопрос, использование чего-то вроде эластичного поиска полностью меняет проблему, поскольку использует суперэффективные обратные индексы для запроса строки супер, иоснован на распределенной системе, где данные отбрасываются на нескольких узлах (то есть на нескольких машинах). Поэтому, если у вас есть много экземпляров в кластере эластичного поиска, вы можете значительно ускорить поиск текста, разбив поиск среди различных сегментов (который распараллеливает поиск), и используя предварительно вычисленный инвертированный индекс. Тем не менее, настройка кластера эластичного поиска является обязательством, и поглощение / индексирование миллиардов записей также не будет быстрым.
Разделяй и властвуй Другое направление, которое вы можете сделать, - это выполнитьприсоединяться локально на вашем компьютере, возможно, разбивая полные таблицы на основе первого символа ваших хэшей, чтобы вы могли «паралеллизировать» ваше объединение с одной работой на первый символ. Кроме того, сортировка и предварительное индексирование обеих таблиц, в postgresql и в памяти, может значительно ускорить такие объединения.
Трудно предоставить дополнительные рекомендации без дополнительных сведений о том, что вы пытаетесь сделать.