我有两张桌子:
表1:被过滤的或I可以说包含过滤记录的分级表,可能在数百万或单行记录中。
表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多分钟,并一直在数亿条记录上运行。还有其他的搜索字符串吗?