开发者

PHP returning strange row counts

i am working with a very large data set (786,432 rows to be precise).

So, to prevent memory limits I want to loop over the data set in piles of 50,000 rows, so to test this out I thought I would try:

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();
    }
}

But my results are very strange: look at round 9 and below.

What is causing this?

Round: 1

Rows: 50000

Start: 0

End: 50000


Round: 2

Rows: 100开发者_StackOverflow社区000

Start: 50000

End: 100000


Round: 3

Rows: 150000

Start: 100000

End: 150000


Round: 4

Rows: 200000

Start: 150000

End: 200000


Round: 5

Rows: 250000

Start: 200000

End: 250000


Round: 6

Rows: 300000

Start: 250000

End: 300000


Round: 7

Rows: 350000

Start: 300000

End: 350000


Round: 8

Rows: 400000

Start: 350000

End: 400000


Round: 9

Rows: 386432

Start: 400000

End: 450000


Round: 10

Rows: 336432

Start: 450000

End: 500000


Round: 11

Rows: 286432

Start: 500000

End: 550000


Round: 12

Rows: 236432

Start: 550000

End: 600000


Round: 13

Rows: 186432

Start: 600000

End: 650000


Round: 14

Rows: 136432

Start: 650000

End: 700000


Round: 15

Rows: 86432

Start: 700000

End: 750000


Round: 16

Rows: 36432

Start: 750000

End: 800000



It looks like $end is not a global offset just number of records to fetch (offset from $start). Try to set $end always for 50000 and changing only $start.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜