对两个表列之间的匹配字符串进行性能优化

时间:2018-12-10 05:18:41

标签: postgresql postgresql-9.5

我有两个表:

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

0 个答案:

没有答案