我有两张桌子:

表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');

Expected result

col1
 ----------
 John Mak
 Smith Will

预期结果的解释:匹配结果应该在结果中,它可以是任何序列,如 Smith WillWill Smith 应该显示 .

Query

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分钟,并继续在数亿条记录上运行 . 任何其他方法搜索字符串?