Добрый день.
Насколько я понял, похожий вопрос уже поднимался в этой ветке.
Суть:
Код из документации по Batch Query:
use yii\db\Query;
$query = (new Query())
->from('user')
->orderBy('id');
foreach ($query->batch() as $users) {
// $users is an array of 100 or fewer rows from the user table
}
При этом генерируется тот же запрос, что и при ->all(), т.е.:
SELECT * FROM `users`
При работе с большими таблицами на такое, естественно, памяти не хватает.
Или смысл batch() уже в порционной выдаче всего полученного результата из БД?