MySQL Многие ко Многим. Удалить или отредактировать? - PullRequest
3 голосов
/ 27 января 2011

У меня есть таблица «многие ко многим», в которую я ввожу некоторую информацию о форме.Недавно я сделал эту форму динамической, чтобы при изменении значения входных элементов она отправлялась в базу данных через AJAX.

Итак, мой вопрос: Быстрее ли попытаться найти существующие значения, отредактировать их, создать те, которые не имеют, и удалить те, которые больше не используются ИЛИ Должен ли я удалить все значения для идентификатора и вставить все новые?

В ответ на комментарий, уточнение.

  • Форма,это имеет около 10 полей.Некоторые из них обязательны, некоторые нет.Каждый раз, когда вы получаете к нему доступ, он генерирует случайный идентификатор.
  • Когда пользователь начинает заполнять форму, после того, как фокус потерян, элемент отправляется через AJAX, и все значения, которые не являются пустыми, вводятся в таблицу «многие ко многим».
  • В таблице 3 поля: идентификатор формы , имя элемента , значение элемента ;

Перефразированный вопрос: Удалить все записи с нужным идентификатором формы или попытаться найти поля и отредактировать их?

Ответы [ 2 ]

3 голосов
/ 27 января 2011

Для удаления всех существующих отношений и добавления новых потребуется меньше кода

  • Убедитесь, что вы делаете это в транзакции
  • Правильно обрабатывать ошибки

Меньше кода == меньше ошибок, меньше времени для разработчиков. Так что это определенно быстрее.

1 голос
/ 27 января 2011

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

Вы также можете попробовать посмотреть:

INSERT INTO table (field1, field2) VALUES ('Value1', 'Value2')
ON DUPLICATE KEY UPDATE field1 = 'Value1'

Который будет вставлять новую запись или обновлять существующую - я все еще подозреваю, что удаление / вставка будет быстрее - в зависимости от количества полей, которые вы будете обновлять в любой момент времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...