@NetyNicka

Как оптимизировать запросы к бд в ZF?

Стоит задача сократить обращение к базе данных. Проект реализован на ZF 1 с базой данных MySQL.
На данном этапе происходит обновление массива записей циклически, что не сильно правильно.
массив имеет вид:
Array
(
    [0] => Array
        (
            [uid] => bmw2
            [query_id] => 74
        )
    [1] => Array
        (
            [uid] => bmw11
            [query_id] => 6
        )
...
)

обновляется циклом
foreach($result as $data)
$this->db->update('table',$data,'query_id = '.$data['query_id']);

Вопрос, есть ли адекватный способ замены цикла на 1 запрос?
  • Вопрос задан
  • 2329 просмотров
Решения вопроса 1
socengel
@socengel
7 лет native php в продакшене, онлайн 20000+,
тут собственно встает вопрос о том как и что нужно обновить.
Можно для нескольких записей выставить одинаковое поле если задать WHERE содержащие несколько id строк. например
WHERE `id` IN(1,2,8)
если же нужно установить разные значения для разных строк. Не могу с уверенной точностью сказать где, но видел систему которая собрала все запросы на обновление и удаление строк в один запрос(конкатенацией) и собственно так можно тоже сделать.
Или использовать конструкцию типа
UPDATE `tbl` SET `field` = CASE
WHEN id = 1 THEN 123;
WHEN id = 2 THEN 456;
…
END
WHERE `id` IN (1,2,8)

Но вот как это реализовать на zf1 честно не знаю почитай документацию.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Стоит задача сократить обращение

зачем?

что не сильно правильно.

почему?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы