Многие другие советы здесь хороши, но предполагают, что вы сможете загружать то, что вам нужно, в память, не исчерпывая ее. Если бы вы могли сделать это, это было бы лучше, чем решение «наихудшего случая», о котором я упоминаю.
Если у вас есть большие файлы, вам может понадобиться сначала отсортировать их. В прошлом я имел дело с несколькими большими файлами, где мне нужно было сопоставить их по ключу (иногда совпадения были во всех файлах, иногда только в паре и т. Д.). Если это так, первое, что вам нужно сделать, это отсортировать файлы. Надеемся, что вы находитесь в поле, где вы можете легко это сделать (например, для этого есть много хороших сценариев Unix). После того, как вы отсортировали каждый файл, прочитайте каждый файл, пока не получите соответствующие идентификаторы, а затем обработайте.
Я бы предложил:
1. Откройте оба файла и прочитайте первую запись
2. Проверьте, есть ли у вас идентификаторы и обрабатываются ли они соответствующим образом
3. Прочитайте файл (ы) для только что обработанного ключа и повторите шаг 2 до EOF.
Например, если у вас был ключ 1,2,5,8 в FILE1 и 2,3,5,9 в FILE2, вы бы:
1. Откройте и прочитайте оба файла (FILE1 имеет ID 1, FILE2 имеет ID2).
2. Процесс 1.
3. Считать ФАЙЛ1 (ФАЙЛ1 имеет ИД 2)
4. Процесс 2.
5. Считайте ФАЙЛ1 (ID 5) и ФАЙЛ2 (ID 3)
6. Процесс 3.
7. Прочитайте ФАЙЛ 2 (ID 5)
8. Процесс 5.
9. Считайте ФАЙЛ1 (ID 8) и ФАЙЛ2 (ID 9).
10. Процесс 8.
11. Считайте ФАЙЛ1 (EOF .... больше не обрабатывается ФАЙЛ1).
12. Процесс 9.
13. Считайте ФАЙЛ2 (EOF .... больше не обрабатывается ФАЙЛ2).
Имеет смысл?