Некоторые подходы к эффективному чтению и записи больших объёмов данных в C++:
  - Использование контейнеров с соотношением уникального ключа и значения.                                                                          xakep.ru                       Например, для больших данных можно построить 
std::unordered_map и стараться как можно реже его изменять.                                                                          xakep.ru                         - Минимизация затрат на динамическое выделение памяти на каждое поле в каждой записи.                                                                          xakep.ru                       Можно изначально выделить память под все данные всех полей в сумме.                                                                          xakep.ru                       
  - Обработка данных кусками, которые помещаются в оперативную память.                                                                          otvet.mail.ru                       Нужно прочитать блок, обработать его, выкинуть исходные данные, затем прочитать следующий блок.                                                                          otvet.mail.ru                       
  - Использование памяти, отображённой в файл.                                                                          stackoverflow.com                                                                                               www.rsdn.org                       Можно завести в памяти таблицу со смещениями строк и держать в памяти буфер на несколько тысяч строк.                                                                          www.rsdn.org                       При выходе за пределы буфера нужно переходить на нужное смещение файла и скачивать данные.                                                                          www.rsdn.org                       
  - Использование сжатых данных.                                                                          stackoverflow.com                       Можно записывать сжатые данные (например, с помощью zlib) и распаковывать их на лету.                                                                          stackoverflow.com                       
  - Применение асинхронной обработки.                                                                          www.codewithc.com                       Можно использовать методы асинхронного программирования, чтобы наиболее эффективно использовать ресурсы CPU во время ожидания завершения операций ввода-вывода.                                                                          www.codewithc.com                       
  
 Для эффективной обработки больших объёмов данных также может быть полезна параллельная обработка, для которой в C++ есть специальные фреймворки, например, OpenMP и Intel Threading Building Blocks (TBB).                                                                          www.codewithc.com