代码之家  ›  专栏  ›  技术社区  ›  MAK

两个表列之间匹配字符串的性能调整

  •  0
  • MAK  · 技术社区  · 7 年前

    我有两张桌子:

    表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多分钟,并一直在数亿条记录上运行。还有其他的搜索字符串吗?

    0 回复  |  直到 7 年前