-4

我需要将每条记录(大约 1m 条记录)的“键”与 DB 中的 70m+ 条记录进行比较。

我真的不想一次又一次地打数据库来比较。

当我尝试将所有键(仅键)从数据库加载到内存(哈希表)时,我在程序的其他部分随机出现内存异常(如我所料)。

是否有任何基于文件的哈希表实现而不是内存?

4

1 回答 1

3

在数据库中创建一个临时表并将所有 1m 键写入其中。然后,使用查询将临时表中的键与目标表中的键进行比较——这将相对较快,因为 SQL 引擎非常擅长加入。由于您只需要 1m 个键的结果,因此查询将返回 1m 行(而不是 70m),您还可以流式传输该结果(因为它已经包含匹配项)。

于 2013-10-01T12:44:58.247 回答