两列之间的字符串查找/匹配

问题描述 投票:0回答:1

让我们考虑两个表:

  • A(字varchar2(200));
  • B(音节varchar2(5));

现在我们要创建一个表C,它是单词和音节之间的映射(当然1个单词对应多个音节,1个音节对应多个单词): C(单词、音节)

以下是我们构建此表的方法:

Select word, syllable
From A
Join B
  On instr(word,syllable)>0;

但是运行速度很慢,100k 单词和 150k 音节大约需要 2 小时。

我们尝试了多种方法来改进这一点(提示、索引......),但没有成功。 我们很快就会尝试 Oracle 文本索引,但我们还没有具体的权利。

有人知道我们可以尝试如何改进性能吗?这对我们来说是一个主要问题,因为我们计划增加大小或数据,所以它会变得非常长......

sql oracle query-optimization
1个回答
0
投票

这是进行笛卡尔连接,因此 100K * 150K = 150 亿行,然后对结果应用

INSTR
函数。假设您有一个具有足够 CPU 的数据库主机,那么使其运行得更好的唯一方法就是为其提供并行性。如有疑问,请询问您的 DBA:

select /*+ parallel(16) */ word, syllable, etc....
© www.soinside.com 2019 - 2024. All rights reserved.