За последние 24 часа нас посетили 22399 программистов и 1169 роботов. Сейчас ищет 691 программист ...

Скорость оператора case

Тема в разделе "MySQL", создана пользователем AlNick, 6 мар 2019.

  1. AlNick

    AlNick Активный пользователь

    С нами с:
    19 авг 2017
    Сообщения:
    64
    Симпатии:
    3
    Мне нужно обновить значения нескольких строк в таблице. Хочу использовать оператор CASE. Но в нём нужно использовать ELSE с именем поля. Без него остальные строки будут пустыми. Получается, что при обновлении с CASE обновляется вся таблица. Только неуказанные строки заново получают текущее значение. С большими таблицами это будет выполняться медленно?
     
  2. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @AlNick, может не надо там CASE?
     
  3. AlNick

    AlNick Активный пользователь

    С нами с:
    19 авг 2017
    Сообщения:
    64
    Симпатии:
    3
    Во первых, хотелось бы всё таки понять насчёт CASE. Во вторых - как ещё можно обновить в одном запросе несколько строк таблицы? Для каждой строки своё значение одного поля
     
  4. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    Что мешает использовать выражение where для ограничения затрагиваемых строк?
     
  5. AlNick

    AlNick Активный пользователь

    С нами с:
    19 авг 2017
    Сообщения:
    64
    Симпатии:
    3
    Ничего не мешает. Я хочу разобраться в принципе работы оператора CASE. Если есть смысл использовать WHERE, то использую.
    Точнее использую IN
     
  6. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    update без where просматривает все строки.
    case тут ни при чём.
    Сам же case - просто набор пар "утверждение" - "выражение".
    Если "утверждение" истинно, то результат - значение "выражения".
    Если ни одно из "утверждений" не истинно, то результатом будет выражение из блока else.
    --- Добавлено ---
    Подробнее: Выражение CASE – условный оператор языка SQL
     
    AlNick нравится это.
  7. AlNick

    AlNick Активный пользователь

    С нами с:
    19 авг 2017
    Сообщения:
    64
    Симпатии:
    3
    Понятно. Об этом и был вопрос))