За последние 24 часа нас посетил 17401 программист и 1650 роботов. Сейчас ищут 763 программиста ...

Сравнить значение поля перед обновлением

Тема в разделе "PHP и базы данных", создана пользователем beshot, 22 май 2015.

  1. beshot

    beshot Новичок

    С нами с:
    18 май 2015
    Сообщения:
    24
    Симпатии:
    0
    Всем привет!
    Происходит обновление записи в БД, запись - набор полей, не все поля нужно обновить, а только те которые отличаются от набора данных. Как лучше сделать сравнение перед обновлением, запрос на выборку? И стОит ли игра свеч, может дешевле взять и обновить всю строку?
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Обновляй, то что изменилось.
     
  3. beshot

    beshot Новичок

    С нами с:
    18 май 2015
    Сообщения:
    24
    Симпатии:
    0
    ээ, не могли бы Вы пояснить свою мысль?
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Ну вот было получено 3 значения: x = 1, y = 2, z = 3
    значение 2 изменили на 7, а 3 на 5
    вот и делай только set y = 7, z = 5
     
  5. beshot

    beshot Новичок

    С нами с:
    18 май 2015
    Сообщения:
    24
    Симпатии:
    0
    но откуда я узнаю какое значение изменилось?
    перед обновлением делать запрос на выборку, затем сравнивать и вставлять только если значение отличается?
    лишний запрос - лишняя нагрузка (
    знаете весь вопрос возник от желания избавить MySQL сервер от ненужной работы, от ненужных обновлений данных.
    однако попробовав обновить поле на значение равное имеющемуся я получил:
    Код (Text):
    1. /* Affected rows: 0  Найденные строки: 0  Предупреждения: 0  Длительность  1 query: 0,000 sec. */
    может быть сервер сам определяет нужно ли обновлять запись, если значение не менялось?
    и если так то, производительность не страдает, таблица на время записи не блокируется и т.п?