PHP возвращает странное количество строк - PullRequest
0 голосов
/ 01 июня 2011

Я работаю с очень большим набором данных (точнее, 786,432 строк).

Итак, чтобы избежать ограничений памяти, я хочу перебрать набор данных в стопки по 50000 строк, чтобы проверить этоЯ думал, что попробую:

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

1 Ответ

1 голос
/ 01 июня 2011

Похоже, что $ end - это не глобальное смещение, а просто количество извлекаемых записей (смещение от $ start). Попробуйте установить $ end всегда на 50000 и изменить только $ start.

...