PHP返回奇怪的行数

时间:2011-06-01 01:56:24

标签: mysql codeigniter mysql-num-rows

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

1 个答案:

答案 0 :(得分:1)

看起来$ end不是全局偏移量,只是要获取的记录数(偏离$ start)。尝试将$ end设置为50000并仅更改$ start。