我有两个表:
表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多分钟,并持续运行着亿万条记录。还有其他搜索字符串吗?