2

我有一个表说示例“ABC”,我有一行需要存储到这个“ABC”表中。我打算更新它而不是从表中删除然后插入。这将对数据库产生什么影响?在,表级别,页面级别,时间,成本和每件事。

4

7 回答 7

11

我不能 100% 确定你在问什么,但我会在黑暗中试一试。执行 DELETE 然后 INSERT 到表中以更新信息是一个非常糟糕的主意。

为什么?因为如果您有另一个表的外键引用 ABC,您将丢失您的引用。也就是说,当然,除非您将新记录的 PK 设置为与旧(已删除)记录相同的 PK。在这种情况下,你为什么不一开始就更新?

此外,DELETING 然后 INSERTing 是两个操作,而 UPDATEing 是一个,这使得 DELETE 和 INSERT 需要(理论上)更多时间。

还有易用性因素。如果您删除然后插入,则必须手动跟踪每个列值。如果你更新,你只需要知道你想改变什么。

于 2009-01-09T08:52:03.827 回答
2

更新是更新表最简单、最快的方法。

于 2009-01-09T08:52:31.503 回答
2

The DELETE & INSERT operations takes longer time compare to UPDATE.Think if u want to change only one column in the row.Then DELETE and INSERT will be complicated.

于 2009-01-19T02:11:00.773 回答
1

显然,UPDATE 是首选,但取决于 RDBMS,使用 DELETE-INSERT 是为了避免 LOCK,因此它可以服务于大量并发访问。这是一种常见的技术。

一些数据库在磁盘上使用固定大小的记录,所以更新速度很快。这是一个就地操作。其他一些数据库使用可变大小的记录。在这样的数据库中,DELETE/INSERT 与 UPDATE 没有太大区别,因为 UPDATE 实际上将旧元组/索引标记为死,写入一个新元组,然后让垃圾收集器稍后回收死元组。

于 2011-06-20T11:00:14.657 回答
0

UPDATE 的另一个好处是在 ACID 数据库的实际定义中 - 原子性。

于 2009-01-09T09:22:11.537 回答
0

更新将更改现有行,这是一个简单的操作,而删除后插入将是数据库的更多工作。

此外,如果您使用标识列,删除和插入可能会破坏对您的行的引用。

编辑:实际上,有时您会想要进行删除和插入而不是更新。如果您不知道要更新的数据是否存在,这可能是为了简化您的逻辑。然后执行删除然后执行插入比检查行是否存在然后根据检查结果执行更新或插入更容易。

此外,您可能希望根据您的使用方式更新任何标识列(例如,如果您使用它来跟踪对表的最新更改)。

但总的来说,更新比删除和插入操作要少,所以如果可以的话,你应该总是使用它。

于 2009-01-09T08:53:29.893 回答
0

使用 UPDATE 而不是 DELETE/INSERT 的主要优点是您可以选择只更新行中更改的字段(这比 DELETE 后跟 INSERT 快得多)。

于 2009-01-09T09:05:01.133 回答