私は非常に大きなデータセット(正確には786,432行)を扱っています。
したがって、メモリ制限を回避するために、50,000 行の山でデータ セットをループしたいので、これをテストするために、次のことを試してみようと思いました。
function test(){
$start = 0;
$end = 50000;
$q = $this->db->select('uuid')->from('userRegionLink')->limit($end, $start)->get();
$i = 0;
while($q->num_rows() != 0){
echo 'Round: '.++$i.'<br />';
echo 'Rows: '.$q->num_rows().'<br />';
echo 'Start: '.$start.'<br />';
echo 'End: '.$end.'<hr />';
$start = $end;
$end = $end+50000;
$q = $this->db->select('uuid')->from('userRegionLink')->limit($end, $start)->get();
}
}
しかし、私の結果は非常に奇妙です: ラウンド 9 以下を見てください。
これは何が原因ですか?
ラウンド: 1
行: 50000
開始: 0
終了: 50000
ラウンド: 2
行: 100000
開始: 50000
終了: 100000
ラウンド: 3
行: 150000
開始: 100000
終了: 150000
ラウンド: 4
行: 200000
開始: 150000
終了: 200000
ラウンド: 5
行: 250000
開始: 200000
終了: 250000
ラウンド: 6
行: 300000
開始: 250000
終了: 300000
ラウンド: 7
行: 350000
開始: 300000
終了: 350000
ラウンド: 8
行: 400000
開始: 350000
終了: 400000
ラウンド: 9
行: 386432
開始: 400000
終了: 450000
ラウンド: 10
行: 336432
開始: 450000
終了: 500000
ラウンド: 11
行: 286432
開始: 500000
終了: 550000
ラウンド: 12
行: 236432
開始: 550000
終了: 600000
ラウンド: 13
行: 186432
開始: 600000
終了: 650000
ラウンド: 14
行: 136432
開始: 650000
終了: 700000
ラウンド: 15
行: 86432
開始: 700000
終了: 750000
ラウンド: 16
行: 36432
開始: 750000
終了: 800000