Model::find()->batch(100), но вылетает по лимиту памяти.
В табличке 5кк записей. В контейнере выделено 256Mb памяти
Хотя, если делаю Model::find()->limit(100)->all() - выполняется молниеносно.
Есть какие-то норм способы перебрать большое кол-во записей, кроме как городить свой перебор с LIMIT и OFFSET ?
А почему вы считаете limit & offset огородом?
я не считаю этот подход чем-то плохим. Просто вроде как должно быть готовое решение во фреймворке для подобных тривиальных задач, а вместо этого batch() всё-таки делает запрос ко всем записям, а уже потом делит на батчи
Ну из опыта могу сказать, что выцеплять огромное количество записей это не самое лучшее решение.. Сами же понимаете, что без пагинации выжрет память и грузится будет долго даже через аякс.. Пагинация - это все же выход для большого объёма данных.. Но также вы можете сделать догрузку.. 100 записей получили, идёт повтора опять на 100 записей и вы их просто догружаете в список...
вы не правильно меня поняли, мне не надо показывать большое кол-во записей. Мне надо перебрать их для дальнейшего апдейта
DataTable не канает?
Обсуждают сегодня