Нужно сделать вот такой update
но каждый раз так писать это я так понял не есть хорошо к тому же этих обновлений может бить разное количество.
Так вот как все то что я написал ниже написать в один запрос?
$sql = "UPDATE `categories` SET `name`='Категория 1' WHERE `cat`='1'";
$sql = "UPDATE `categories` SET `name`='Категория 2' WHERE `cat`='2'";
$sql = "UPDATE `categories` SET `name`='Категория 3' WHERE `cat`='3'";
$sql = "UPDATE `categories` SET `name`='Категория 4' WHERE `cat`='4'";
В основном таких запросов будет не больше 6 но как то в цикле их делать не хочу, боюсь нагрузит сайт :(
Если речь о MySql то можно воспользоваться INSERT + ON DUPLICATE KEY UPDATE
INSERT INTO mytable (id, a, b, c)
VALUES (1, 'a1', 'b1', 'c1'),
(2, 'a2', 'b2', 'c2'),
(3, 'a3', 'b3', 'c3'),
(4, 'a4', 'b4', 'c4'),
(5, 'a5', 'b5', 'c5'),
(6, 'a6', 'b6', 'c6')
ON DUPLICATE KEY UPDATE id=VALUES(id),
a=VALUES(a),
b=VALUES(b),
c=VALUES(c);
Смысл в том, что если запись уже существует в таблице по primary key, то она обновится данными, которые Вы описали после конструкции ON DUPLICATE KEY UPDATE
Источник
Вы немножко не понимаете что такое нагрузка, отсюда и ваш вопрос.
Попробую доступно донести свое представление:
Сперва надо определиться что мы будем подразумевать под словом нагрузка, это либо время обработки (сколько времени потребуется для выполнения запросов) либо объем ресурсов (нагрузка на цп и т.д.). Понятно что эти 2 параметра связаны друг с другом, но поверьте, они не связаны прямой зависимостью, поэтому конкретно сейчас мы их разделим. Т.к. запросы у вас простые апдейты, на объем ресурсов они сильно не ударят, поэтому нас интересует время.
Время обработки запроса у вас суммируется из двух частей:
1) Время, которое затрачивает скрипт PHP на отправку запроса и на прием ответа. (1)
2) Время, которое надо самому MySQL серверу для обработки вашего запроса и формирования ответа. (2)
К примерам:
У вас есть цикл с кол-вом итераций например 10, который в теле формирует и отправляет простой запрос (например добавление новой записи). Итого 10 запросов, тут значительное время тратится на (1), т.е. на отправку и на прием ответа. Однако если вы пошлете эти 10 запросов разом, через ;
, то тем самым вы сводите время к минимуму в данной ситуации.
Теперь давайте разберем ситуацию, когда вы делаете INSERT + ON DUPLICATE KEY UPDATE
(как вам подсказали выше), и отправкой UPDATE через ;
. Вообще mysql предоставляет инструменты которые позволяют смотреть, на сколько "удачным" вышел ваш запрос, сколько ресурсов он требует, сколько колонок затрагивает и т.д. К гадалке не ходи, но что-то мне подсказывает что первый вариант будет выполняться дольше, ибо так заложено его конструкцией. Собсна используя простой update через ;
вы сократите (2).
Итого:
В целом можно сказать что:
(1) - это кол-во обращений к БД из скриптов, которые вы делаете, когда пользователь обращается к странице. (чем меньше, тем лучше).
(2) - это оптимизация запросов, вот тут уже целая наука, но в вашем случае простой апдейт будет удачным вариантом.
P.S. С индексированными запросами MySQL справляется очень хорошо и годно, способен выдержать большие объемы данных и работать с ними достаточно быстро, так что обращайте на это ваше внимание. Проблемы наблюдаются с JOIN
, LIKE
, с неиндексированными запросами.
$updateArr = array(
1 => 'Категория 1'
2 => 'Категория 2'
3 => 'Категория 3'
4 => 'Категория 4'
);
foreach( $updateArr as $categoryId => $categoryName ){
$sql = "UPDATE `categories` SET `name`='".$categoryName."' WHERE `cat`='".$categoryId."'";
// sql execute
}
Ну если в цикле не хотите, то, вам сюда
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
На данный вопрос уже ответили:
Уверена зная PHP стал изучать framework symfony 4Начал с простенькой формы
Есть jpeg в local storage файле storage/app/MyFyle/1jpg