У меня есть две таблицы:
Таблица 1: Является ли отфильтрованная или я могу сказать, что промежуточная таблица содержит отфильтрованные записи, возможно, в миллионах или в отдельных записях.
Таблица 2: Таблица со всеми вставленными данными, насчитывающая более ста миллионов записей.
Примечание. Обе таблицы имеют более 40 столбцов и имеют индекс по необходимым столбцам..
Ниже приведены примеры данных для понимания требования.
create table pattern1 ---This is staging table
(
col1 varchar(100)
);
insert into pattern1 values('John Mak'),('Omont Boy'),('Will Smith'),('Mak John');
create table pattern2
(
col1 varchar(100)
);
insert into pattern2 values('John Mak'),('Smith Will'),('Jack Don');
Ожидаемый результат :
col1
----------
John Mak
Smith Will
Объяснение ожидаемого результата:Результат сопоставления должен в результате отображаться в любой последовательности, например Smith Will
и Will Smith
.
Запрос :
SELECT p2.*
FROM Pattern2 P2
INNER JOIN Pattern1 P1 ON P2.col1 LIKE '%'||P1.col1||'%'
--May required more than one columns here to match strings.
Приведенный выше запрос занял более 20 минут и продолжает работать с сотнями миллионов записей.Любые другие подходящие строки поиска?