【发布时间】:2014-08-04 01:28:01
【问题描述】:
我在数据库中有一个大型数据集(数百万条记录),一个简化的示例如下:
6,1,3,5,2,3,4,5,6,7,9,3,1,3,5,4,6,3,4,6,4,5,7,4,5,0,8,... (millions records)
这里每个数字代表一行的一个键值。
我需要找到所有出现的1,3,5。直接的方法是迭代整个数据集并在每次迭代中检查三个连续的行。
有没有更有效的算法来做到这一点?
【问题讨论】:
-
对于较大的搜索字符串,KMP 可能会提高搜索性能。我不确定这是否适用于三个要素。如果您多次搜索相同(或相似)的数据库,您可以保存以前的搜索结果。
-
当要在未排序的集合中查找所有出现的事物时,O(N) 是最好的。
-
in each iteration是什么意思?数据库应该只有一次迭代。
标签: algorithm large-data