我正在处理一个非常大的数据集(准确地说是 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