我有两张桌子:
表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 Will
和 Will 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分钟,并继续在数亿条记录上运行 . 任何其他方法搜索字符串?