Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我需要将每条记录(大约 1m 条记录)的“键”与 DB 中的 70m+ 条记录进行比较。
我真的不想一次又一次地打数据库来比较。
当我尝试将所有键(仅键)从数据库加载到内存(哈希表)时,我在程序的其他部分随机出现内存异常(如我所料)。
是否有任何基于文件的哈希表实现而不是内存?
在数据库中创建一个临时表并将所有 1m 键写入其中。然后,使用查询将临时表中的键与目标表中的键进行比较——这将相对较快,因为 SQL 引擎非常擅长加入。由于您只需要 1m 个键的结果,因此查询将返回 1m 行(而不是 70m),您还可以流式传输该结果(因为它已经包含匹配项)。