【问题标题】:Delete and Insert vs Update rows on table [closed]删除和插入与更新表上的行[关闭]
【发布时间】:2017-04-04 17:43:06
【问题描述】:

当用户可以为一个看起来像这样的提供者 (idProveedor) 选择许多可用项目 (idFamilia) 时,我有一个 Web 表单

值保存在此表中

-----------------------------
| idProveedor | idFamilia   | 
-----------------------------
|      5      |      1      |
-----------------------------
|      5      |      2      |
-----------------------------
|      6      |      2      |
-----------------------------

提供者创建后,可以对其进行编辑,并且可以更改为 idFamilia 选择的值。所以我有三种不同的可能发生的情况:

  • 行数保持不变,我只需要编辑 idFamilia 的值。
  • 从选择中删除了一些项目,我需要搜索表中的值并删除这些行。
  • 添加了新项目,我需要插入这些附加值。

现在我正在考虑使用正在编辑的 idProveedor 删除所有行,然后插入新的选择。

这是一个好习惯吗?从长远来看,这会影响性能吗?

您能否推荐一个教程或示例以另一种方式进行操作?

【问题讨论】:

  • 更新只会使用较少的处理来更新指定的字段,而如果您计划进行检查等安全/错误预防,则删除/插入会进行更多的处理和更多的错误空间。如果您要删除/插入的行的 ID 有任何依赖于该 ID 的内容,您还需要仔细考虑
  • 在执行删除然后插入时,您绝对不会在性能方面获得任何好处。为什么?因为无论您执行删除还是更新,系统都必须找到该行。为什么系统要做这么多工作却没有明显的好处?
  • 好吧,这个表的 ID 没有任何依赖它们的东西。我想我最终会做删除插入,我正在尝试找到一个教程或示例以另一种方式进行。
  • 我可能会使用 Ajax 来添加或删除条目。

标签: php mysql database codeigniter


【解决方案1】:

我总是会删除并重新创建它们。

虽然这会增加一些性能损失,但它使代码易于理解且易于维护。除非您是 Uber、Google、Facebook、Amazon 或其他世界规模的应用程序,否则您从优化中获得的收益远小于它所产生的成本:开发、调试和维护时间。

【讨论】:

  • 是的,如果您必须将更新与插入结合起来,那就太麻烦了,因为一个标准的行数前后不一样。
猜你喜欢
  • 2014-09-24
  • 2015-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多