PDO извлекает большое количество данных

Я пытаюсь получить большой объем данных из базы данных PDO PostgreSQL, чтобы вычислить их с помощью алгоритма упрощения (сокращения количества строк) в php.

Проблема в том, что я не могу использовать fetchAll, часто получая сообщение:

Допустимый объем памяти 134217728 байт исчерпан …

Затем я выбрал выборку с использованием курсоров, которая позволяет мне получить доступ к требуемым данным без забот о памяти, как в этом примере:

function simplify(&q){
//Doing some stuff loop
$current = $q->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_ABS, $index+1); //Iterators starts from 1
//Doing some more stuff

}

[...]

$query = $this->connexion->prepare($req, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL)); //More than 100k results

$result = simplify($query);

Теперь это работает как шарм … за исключением времени выполнения, которое занимает до 1 минуты, чтобы вычислить 200 000 строк.

Я указываю, что мой алгоритм использует рекурсивное поведение, которое не помогает в моем случае.

Есть ли другое решение, чтобы сократить время выполнения без потребления слишком большого количества памяти?

Я думал о триггере на стороне сервера БД, но что вы думаете?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]