问个算法问题
假设A文件有100万条记录,B文件也有100万条记录,有什么算法可以快速地找出两文件中共有的记录? 我的笨方法:把 A文件的 key与行号 加载进内存, 并按key 排好序. 然后顺序读取B文件的 key , 查找得相同记录的行号对应关系. unoin all比left join快用union all后
select a.a1 from ab group by a1 having count(*)>1 不好意思,看成数据库了 4# 2002070344
其实数据库就是用B树来解决的,这也是一个思路 2# 自由自在
效率很低…… 共有的定义是什么样 行号和内容一样?
如果只是内容一样可以排序(n*logn)
不过数据才100w 直接用map把一个文件放到内存,再读另一个在map中查找内存一般也吃得消的 关键是事先有没有建立索引~~索引是快速检索的关键。 8# adisonlee
无……乱序,只是普通的文本文件 9# 低调的MJ
无序不能做到优化,需要用内存空间换取时间。这是基本原则。
没有办法只好续条读取检索。或者换个快点的硬盘吧,没有什么好的办法。 看你的数据特征
页:
[1]