Задавайте вопросы, мы ответим
Вы не зашли.
Помогите с инструкцией UPDATE.
Инструкция UPDATE позволяет обновить данные в одной строке или в нескольких:
UPDATE tablename SET pole1="message" WHERE id="1" and id="15";
Недостаток, что в этом запросе в каждой обновляемой ячейке устанавливается одно и тоже значение pole1="message". Мне нужно сделать 10 запросов UPDATE и в каждом обновить pole1 и задать для него уникальное значение. Так как в этих запросах pole1 должно иметь каждый раз разные значения, то для того и надо сделать 10 запросов.
Можно ли оптимизировать эти 10 запросов, соединив их в один?
Например, что то типа такого: UPDATE tablename SET (pole1="message1" WHERE id="2"), (pole2="another message"). Просто для примера написал, т.к. не знаю синтаксиса таких запросов.
То есть здесь хочется получить преимущество в быстроте, т.к. предполагаю, что один запрос к mysql будет произведён быстрее, чем 10 отдельных.
Отредактированно sito-corito (30.08.2010 20:20:56)
Неактивен
Как вариант можно вставить требуемые пары во временную таблицу, а затем сделат UPDATE с JOIN
Неактивен
Если на id есть уникальный индекс, то можно воспользоваться REPLACE.
Неактивен
Я так понимаю, что инструкцией UPDATE не предусмотрено множественное обновление ячеек с разными значениями одновременно.
Подскажите, как это можно сделать с помощью UPDATE и JOIN. Метод с помощью REPLACE тоже интересен, так как у меня id является уникальным ключом.
Короче задача такая. Есть таблица с двумя полями id и pole1. Необходимо за один запрос обновить данные в таблице. Там где id=1 поставить pole1="mes1", там где id=2 поставить pole1="mes2", там где id=3 поставить pole1="mes3". Вот такой запрос помогите, пожалуйста, составить.
Отредактированно sito-corito (31.08.2010 17:21:33)
Неактивен
Замените слово INSERT на слово REPLACE?
Неактивен
paulus написал:
Замените слово INSERT на слово REPLACE?
Все равно не понял, как с помощью REPLACE сделать такой запрос.
Неактивен
1. Напишите запрос, который бы вставлял строки с нужными данными.
2. Замените слово INSERT на слово REPLACE.
Неактивен
Теперь разобрался, спасибо.
А что вы посоветуете с вершины своего опыта: заменять 10-20 записей с помощью инструкции REPLACE или не заморачиваться и делать 10-20 отдельных обращений к базе с помощью инструкции UPDATE?
Неактивен
Честно? Не принципиально Скорее всего, на очень больших нагрузках
REPLACE будет работать чуть быстрее. Но надо мерять.
Неактивен
А мне все равно не дошло что надо сделать.
Топикстартер, покажите Ваш запрос (готовый), если можно.
Неактивен
Если есть уникальный ключ, и столбцов в таблице много, пример:
Отредактированно Osi322 (14.01.2015 07:09:34)
Неактивен