[email protected] писал(а): ↑2018.05.30, 13:01
когда в базе данных около 100000 записей и нужно их сверить по 10 параметрам и за пару часов
то любые ORMы будут гонять лишние данные. ActiveRecord еще няшка в сравнении с Hibernate/Doctrine
тогда гоняйте данные
писать SQL еще не самый нижний уровень.
в сценариях работы "100000 записей и нужно их сверить по 10 параметрам" чтобы не молотило часами пишутся хранимые процедуры, для элементарых действий, с которых и набирается SQL код конкретного алгоритма сверки по 10ти параметрам.
мне наличие всех преимуществ AR как раз и замедляло работу с базой
для пакетных операций над данными - преимуществ у AR перед SQL и хранимыми процедурами мне сложно придумать
потому что для пакетных операций над данным не нужны - поведение и работа в ООП стиле
а если нужно ООП... то думаю что-то странное в дизайне приложения.
например частая операция - "изменить цены товаров ... согласно формуле 1 если ..., формуле 2 если
стоит просто трансформироваться в отдельные запросы -
применяем формулу 1 для группы товаров если ...
применяем формулу 2 для группы товаров если ...
Ускорить же работу AR конечно можно.
Во-первых проектирвать схему БД до написания первой AR модели. проектировать с учетом тех самых выборок, сверок, пакетных операций. если надо ради этого - то и денормализовать.
А потом уж писать модели.
Во-вторых заглядывать в план запроса. т.е. читать SQL и понимать что он делает
а если читаете и понимаете - то может и переписать SQL для таких, тяжелых в обработке случаев?
и Yii::$app->db->createCommand может и на порядок быть эффективней во время выполнения
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.