[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Возможно ли сократить update?
Strannik
Добрый день.

Приходится выполнять такой код:


$sql="
UPDATE `meta_page` SET `value`='"
.$c2."' WHERE `page`='".$c1."' AND `type`='title';
UPDATE `meta_page` SET `value`='"
.$c3."' WHERE `page`='".$c1."' AND `type`='description';
UPDATE `meta_page` SET `value`='"
.$c4."' WHERE `page`='".$c1."' AND `type`='keywords';
UPDATE `meta_page` SET `value`='"
.$c5."' WHERE `page`='".$c1."' AND `type`='author';
UPDATE `meta_page` SET `value`='"
.$c6."' WHERE `page`='".$c1."' AND `type`='copyright';";



Подскажите реально ли вместо 6 Update сделать 1 (сократить код) ?
inpost
CASE , WHEN , THEN

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Strannik
а есть ли вообще смысл в этом?
я имею ввиду будет ли код быстрее выполняться?

если через CASE, то получится что-то вроде этого:

UPDATE meta_page
SET value=
(
CASE
WHEN
(page='$c1' && type='title') THEN value='$c2'
WHEN (page='$c1' && type='description') THEN value='$c3'
WHEN (page='$c1' && type='keywords') THEN value='$c4'
WHEN (page='$c1' && type='author') THEN value='$c5'
WHEN (page='$c1' && type='copyright') THEN value='$c6'
END
)


P.S.: например для меня оказалось новостью, что запросы в MsSql пр использовании TOP выполняются на 96% медленнее, чем без него, в MySql наоборот при Limit гораздо быстрее работа...
inpost
Strannik
запусти и проверь. Сравни скорость работы. Иначе никак.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Strannik
Цитата (inpost @ 14.01.2013 - 04:15)
Strannik
запусти и проверь. Сравни скорость работы. Иначе никак.

да в том, то и дело, что этот запрос займет милисекунды, а я о глобальном сейчас)
например если запускать скрипты с такими запросами к базе от 100 000 строк.

P.S.: не так давно столкнулся с большими базами, теперь все анализирую сразу, чтобы потом зря время не терять...

P.P.S.: Да, и спасибо за помощь) я бы про case и не вспомнил, видел инфу наверное раньше 1 раз да и то мельком...
inpost
Вот скажу одно, или скажу другое... это не значит, что будет истина. Лучше всего дождаться, когда таблица разрастется, тогда и проверять.
Объясню на примере, прошлая тема моя - почистить таблицу. Советы гугла - отключить индексы, типо быстрее будет, отключил индексы, а оказалось, что без индекса по полю, которое удаляю - удаляется в сотни раз медленнее. Гугл выдал так же на тему на хабре, там так же писали об этом методе.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Strannik
ясно, читай и доверяй, но лучше все тестировать самому)
Спасибо)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.