MySql множественный insert и update

май 30 , 2015
Метки:

mysqlКогда нам нужно обновить несколько строк в таблице MySql, можно выполнить последовательно несколько update-ов. Когда вставить строки в таблицу - несколько insert-ов. Но это очень плохо в плане производительности. Рассмотрим короткий пример добавления и обновления нескольких строк в таблице одним запросом.

Задача: есть таблица товаров с ценами. Например, таблица goods, поля id, good, price. id - ключевое поле. id и price - числовые целые значения. У нас есть массив данных с id товаров и названиями и ценами. Нам нужно обновить названия и цены у существующих товаров и добавить новые. Делается это одним запросом:

Множественный update

    insert into goods  
        (id,good,price)  
        values 
            (1, 'Ноутбук', 30000),
            (2, 'Телефон', 5000),
            (3, 'Смартфон', 10000),
            (4, 'Планшет', 15000)
    on duplicate key 
    update good=values(good), price=values(price)

После выполнения в таблицу добавятся новые поля, если не было найдено ключевое поле. Если же запись с таким ключом уже была, то в ней обновятся названия и цены товара.
Если мы гарантированно знаем, что все значения нужно только добавлять, то убираем 2 последние строки. Получится так:

Множественный insert

    insert into goods  
        (id,good,price)  
        values 
            (1, 'Ноутбук', 30000),
            (2, 'Телефон', 5000),
            (3, 'Смартфон', 10000),
            (4, 'Планшет', 15000)
Метки:
Заходите в группу в контакте - https://vk.com/webdevkin
Анонсы статей, обсуждения интернет-магазинов, vue, фронтенда, php, гита.
Истории из жизни айти и обсуждение кода.
Как Вам статья? Оцените!