Большой расход памяти при joinWith и десятки тесячи Events

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Paulius22
Сообщения: 16
Зарегистрирован: 2017.07.19, 13:29

Большой расход памяти при joinWith и десятки тесячи Events

Сообщение Paulius22 »

Добрый день!
Есть две таблицы:

resultsUpdateLog - для логов обновления
id, dateTimeStart, dateTimeFinish

results - для хранения самих результатов. В таблице больше 50 тысяч записей и будет ещё больше
id, player_id, updateLog_id, dateTime, rating и т.д.

связывание таблиц происходит по id и updateLog_id.

Для GridView в модели ResultsUpdateLogSearch создал запрос:

Код: Выделить всё

$query = ResultsUpdateLog::find()
            ->select([
                ResultsUpdateLog::tableName().'.*',
                'COUNT('. Results::tableName().'.id) AS countRes' 
            ])
            ->joinWith(['results'])
            ->groupBy(ResultsUpdateLog::tableName().'.id');
Сделал фильтрацию и сортировку в модели ResultsUpdateLogSearch по полям, в т.ч. по полю количество записей, относящихся к конкретному логу.
В итоге panel показывает memory = 118 мб, а Events = 100 тыс
Причём из таблицы results мне нужно по сути только количество записей, которые относятся к логу.
Количество записей будет увеличиваться. Наверное можно кэшировать, но может есть возможность грамотней запрос составить?!
Paulius22
Сообщения: 16
Зарегистрирован: 2017.07.19, 13:29

Re: Большой расход памяти при joinWith и десятки тесячи Events

Сообщение Paulius22 »

Спасибо, теперь как надо!
Ответить