匹配数据库中10000多个不同元素的最佳方法是什么?

时间:2013-10-08 06:41:15

标签: java mysql database

好的,这是我的情景:

编程语言:Java

我有一个MYSQL数据库,大约有100,000,000个条目。

我在内存中有一个值列表valueList,大约有10,000个条目。

我想迭代valueList并检查此列表中的每个值是否与数据库中的匹配。

这意味着我必须进行至少10,000次数据库调用,这对我的应用程序来说非常低效。 其他方法是将整个数据库加载到内存中一次,然后在内存中进行比较。这很快但需要大量内存。

你们可以为这个问题建议一个更好的方法吗?

编辑:

假设valueList由以下值组成: {"New","York","Brazil","Detroit"}

从数据库中,我将匹配BrazilDetroit。但不适用于NewYork,但New York会匹配。因此,下一步是,在任何剩余的非匹配值的情况下,我将它们组合起来以查看它们是否匹配。因此,在这种情况下,我将NewYork合并,然后找到匹配项。

在我之前关注的方法(逐个数据库调用)中,这是可能的。但是,如果创建一个临时表的方法,这是不可能的

1 个答案:

答案 0 :(得分:7)

您可以将10k记录插入临时表中,其中包含一个插件,如

insert into tmp_table (id_col)
values (1),
       (3),
       ...
       (7);

然后加入2个表以获得所需的结果。

我不知道你的桌面结构,但它可能就像这样

select s.* 
from some_table s
inner join tmp_table t on t.id_col = s.id