如何用PHP在两个大文件中高效查找完全相同的记录?

2026-04-06 07:510阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1574个文字,预计阅读时间需要7分钟。

如何用PHP在两个大文件中高效查找完全相同的记录?

目录 + 1、引言

2、思路

3、实操

4、生成测试文件

5、分割文件

6、查找重复记录

7、完整代码

1、引言:给定两个文件a和b,分别包含x、y行数数据,其中(x, y)均大于10亿,内存限制100M,如何处理?

目录
  • 1、引言
  • 2、思路
  • 3、实操
  • 4、生成测试文件
  • 5、分割文件
  • 6、查找重复记录
  • 7、完整代码

1、引言

给定a,b两个文件, 分别有x,y行数据, 其中(x, y均大于10亿), 机器内存限制100M,该如何找出其中相同的记录?

2、思路

  • 处理该问题的困难主要是无法将这海量数据一次性读进内存中.
  • 一次性读不进内存中,那么是否可以考虑多次呢?如果可以,那么多次读入要怎么计算相同的值呢?
  • 我们可以用分治思想, 大而化小。相同字符串的值hash过后是相等的, 那么我们可以考虑使用hash取模, 将记录分散到n个文件中。这个n怎么取呢?PHP 100M内存,数组大约可以存100w的数据, 那么按a,b记录都只有10亿行来算, n至少要大于200。
  • 此时有200个文件,相同的记录肯定在同一个文件中,并且每个文件都可以全部读进内存。那么可以依次找出这200个文件中各自相同的记录,然后输出到同一个文件中,得到的最终结果就是a, b两个文件中相同的记录。
阅读全文

本文共计1574个文字,预计阅读时间需要7分钟。

如何用PHP在两个大文件中高效查找完全相同的记录?

目录 + 1、引言

2、思路

3、实操

4、生成测试文件

5、分割文件

6、查找重复记录

7、完整代码

1、引言:给定两个文件a和b,分别包含x、y行数数据,其中(x, y)均大于10亿,内存限制100M,如何处理?

目录
  • 1、引言
  • 2、思路
  • 3、实操
  • 4、生成测试文件
  • 5、分割文件
  • 6、查找重复记录
  • 7、完整代码

1、引言

给定a,b两个文件, 分别有x,y行数据, 其中(x, y均大于10亿), 机器内存限制100M,该如何找出其中相同的记录?

2、思路

  • 处理该问题的困难主要是无法将这海量数据一次性读进内存中.
  • 一次性读不进内存中,那么是否可以考虑多次呢?如果可以,那么多次读入要怎么计算相同的值呢?
  • 我们可以用分治思想, 大而化小。相同字符串的值hash过后是相等的, 那么我们可以考虑使用hash取模, 将记录分散到n个文件中。这个n怎么取呢?PHP 100M内存,数组大约可以存100w的数据, 那么按a,b记录都只有10亿行来算, n至少要大于200。
  • 此时有200个文件,相同的记录肯定在同一个文件中,并且每个文件都可以全部读进内存。那么可以依次找出这200个文件中各自相同的记录,然后输出到同一个文件中,得到的最终结果就是a, b两个文件中相同的记录。
阅读全文