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)
Метки:
Как Вам статья? Оцените!
Понравилась статья? Поделись с другими!
Подписка на новые статьи
Подписаться