[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: UPDATE на основании SELECT или сразу UPDATE?
Raymond
Что будет производительнее и лучше:

SELECT id FROM users WHERE login = 'vasya' (вернет, например, число 5)
а потом
UPDATE users SET login = 'Darth Vader' where id = 5

Или

UPDATE users SET login = 'Darth Vader' WHERE login = 'vasya'

Объясните пожалуйста, я на перепутье.
AllesKlar
Raymond
Зависит от логики твоего приложения.

UPDATE users SET login = 'Darth Vader' WHERE login = 'vasya'
Перезапишет ВСЕМ юзерам с логином "vasya" новый логин.



UPDATE users SET login = 'Darth Vader' where id = 5
Перезапишет логин только одному юзеру.

_____________
[продано копирайтерам]
inpost
Raymond
С индексами знаком? Без них медленно, с ними - быстро.
Предположим, что ты стандартный программист и прописал для `id` PRIMARY INDEX. Primary по умолчанию UNIQUE, это значит, что при нахождении первой записи для замены поиск будет остановлен, ведь двух одинаковых значений не будет. В свою очередь `login` какой из индексов ты указал? Если INDEX, то добавь LIMIT 1, если UNIQUE, то limit не нужен. А вот если индекса нет на логине, то всё плохо.

Дальше, 1 запрос, конечно же, будет значительно быстрее чем 2. Логика!

В заключение, смотря как ты осуществляешь 2 запроса подряд. Эта операция у тебя на уровне MySQL, или ты результат возвращаешь в PHP скрипт, откуда вызываешь второй запрос? То это худшее решение.

И последнее, фантазировать какой из индексов шустрее (по ID или login) - не твой уровень, так что с этим не парься пока не попадёшь на проекты размера гугла wink.gif

И последнее прям последнее, индексы пойдут во вред, если данных в таблице очень мало.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
waldicom
Цитата (inpost @ 21.05.2017 - 17:41)
Primary по умолчанию UNIQUE, это значит, что при нахождении первой записи для замены поиск будет остановлен, ведь двух одинаковых значений не будет.

Raymond, если ты это прочитал, то немедленно забудь! Чувак явно не в курсе, как работают индексы в базах данных в частности и вообще в целом

_____________
Свои мозги еще никто не отменял.
Телепатов нету.
Arh
waldicom
Поверить наслово?

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
waldicom
Цитата (Arh @ 22.05.2017 - 07:50)
waldicom
Поверить наслово?

Поверь, если ты тоже не знаешь, как работают индексы. Или, как сказал бы Valick: читай умные книги smile.gif

_____________
Свои мозги еще никто не отменял.
Телепатов нету.
twin
Цитата (inpost @ 21.05.2017 - 16:41)
Дальше, 1 запрос, конечно же, будет значительно быстрее чем 2. Логика!

Никакой логики в этом нет. Как минимум нужно уточнить, какие два запроса. Иногда бывает наоборот.


_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
inpost
twin
Я о равнозначных, что выше у ТС. Уточняю.

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

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Быстрый ответ:

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