Страницы

Поиск по вопросам

воскресенье, 5 января 2020 г.

Что лучше UPDATE или DELETE+INSERT

#mysql #sql


Заметил в одном CMS такую вещь. При необходимости обновлении каких либо записей они
делают сначала DELETE потом INSERT новой измененной записи, вместо UPDATE. Это разве
лучше? На сколько хороша эта практика и зачем? Например я замечал там даже такое: поля
пользователей это отдельные записи в таблице (пол, дата рождения и тд) И если пользователь
поменял пол, то удаляются все поля, а потом INSERTтся по новой вместе с обновленным
полом. CMS комерческая, вроде адекватный код, в отличие от многих, но вот это мне покоя
не даёт
    


Ответы

Ответ 1



Если речь идёт о представлении полей отдельными строками, то предположу, что набор полей динамический. Например, пользователь может сам добавлять или удалять поля о себе. Теперь он что-то поудалял и сохраняет. Как сделать update? Если мы хотим полностью снести удалённые строки, а не записывать в них null (например, чтобы потом искать, у каких пользователей есть такие свойства, или нам просто надо отличать пустую строку от null), то мы должны удалённые строки удалить, изменённые строки обновить, а остальные - не трогать. Это сложно. Гораздо проще всё снести и записать заново. Да, это довольно распространённая практика при редактировании отношений многие-ко-многим. Не знаю, работает ли это быстрее, но так получается гораздо более простой код.

Ответ 2



Более или менее точно ответить можно только при наличии конкретных примеров запросов. А вообще это плохая практика(притом я о такой практике слышу впервые), за исключением каких-то специфических случаев сделать UPDATE куда эффективнее DELETE + INSERT

Комментариев нет:

Отправить комментарий