【发布时间】:2011-02-07 09:02:15
【问题描述】:
我有两个大列表(可能是一亿个项目),每个列表的来源可以来自数据库表或平面文件。两个列表的大小相当,均未排序。我需要找出它们之间的区别。所以我有 3 个场景:
1. List1 是一个数据库表(假设每一行只有一个 item(key) 是一个字符串),List2 是一个大文件。
2. 两个列表都来自 2 个数据库表。
3. 两个列表都来自两个文件。
在情况2中,我打算使用:
这显然是低效的,有没有更好的方法?
另一种方法是:
我计划对每个列表进行排序,然后沿着它们两个方向查找差异。如果列表来自文件,我必须先将其读入 db 表,然后使用 db 排序输出列表。 db排序中的运行时间复杂度仍然是O(nlogn)吗?
当涉及的列表包含数亿个项目时,任何一种方法都是一种痛苦并且似乎会很慢。有什么建议么?
【问题讨论】: