私は解決策を見つけるためにインターネット上を探索しました。それらのすべてが重要な問題を無視している。最高の解決策は、スタックオーバーフローであったファイルをx行からy行に読み込む方法(PHPで)
$file = new SplFileObject('longFile.txt');
$fileIterator = new LimitIterator($file, 1000, 2000);
foreach($fileIterator as $line) {
echo $line, PHP_EOL;
}
しかし、他のアプローチのように、これはオフセットラインに到達するためにファイルの先頭から読み取る必要があります。通常、それは無視できる。しかし、大きなファイル(例えば、何百万行ものファイル)では、プロセスが大幅に遅くなります。時間は、オフセットの増加によって単調増加する。オフセットを数百万に設定すると、処理時間は数秒になります。
データベース(mysqlなど)では、データベース全体を見ずに行を読み取るようにテーブルのインデックスを作成します。ファイルキー(行番号)でそのようなことをする必要はありますか?私はSQLiteやBerkeley DBのようなフラットファイルデータベースがどのようにテーブルのインデックスを作成するのだろうかと思います。