#mysql #sql
Заметил в одном CMS такую вещь. При необходимости обновлении каких либо записей они делают сначала DELETE потом INSERT новой измененной записи, вместо UPDATE. Это разве лучше? На сколько хороша эта практика и зачем? Например я замечал там даже такое: поля пользователей это отдельные записи в таблице (пол, дата рождения и тд) И если пользователь поменял пол, то удаляются все поля, а потом INSERTтся по новой вместе с обновленным полом. CMS комерческая, вроде адекватный код, в отличие от многих, но вот это мне покоя не даёт
Ответы
Ответ 1
Если речь идёт о представлении полей отдельными строками, то предположу, что набор полей динамический. Например, пользователь может сам добавлять или удалять поля о себе. Теперь он что-то поудалял и сохраняет. Как сделать update? Если мы хотим полностью снести удалённые строки, а не записывать в них null (например, чтобы потом искать, у каких пользователей есть такие свойства, или нам просто надо отличать пустую строку от null), то мы должны удалённые строки удалить, изменённые строки обновить, а остальные - не трогать. Это сложно. Гораздо проще всё снести и записать заново. Да, это довольно распространённая практика при редактировании отношений многие-ко-многим. Не знаю, работает ли это быстрее, но так получается гораздо более простой код.Ответ 2
Более или менее точно ответить можно только при наличии конкретных примеров запросов. А вообще это плохая практика(притом я о такой практике слышу впервые), за исключением каких-то специфических случаев сделать UPDATE куда эффективнее DELETE + INSERT
Комментариев нет:
Отправить комментарий