为什么通过 MS Access 更新 MySQL table 比插入一行占用更多?

Why does updating a MySQL table through MS Access take up more than inserting a row?

我认为它会花费更少,因为这是我的命令:

UPDATE device SET Area = " + btn + " WHERE Name = 1

出于某种原因,这是 2160 字节,而插入只需要 1500 字节,即使我插入的数据多于更新的数据也是如此。是否有一个原因?我使用 Wireshark 检查了数字。

是因为MS Access吗?或者仅仅是因为 MySQL 查询的工作原理?

当您执行如下 UPDATE 操作时:

UPDATE device SET Area = " + btn + " WHERE Name = 1

您需要发送有关 table、列、值和位置限制的信息。但是,当您执行这样的 INSERT 时:

INSERT INTO device (Area) VALUES (...)

不需要发送WHERE子句中的限制。这意味着与对相同值执行 UPDATE 相比,它需要 更少 信息。

您可以将 INSERT 视为告诉 MySQL 引擎转到 table 的末尾并创建新记录,而 UPDATE 强制 MySQL 在整个 table 中搜索要更改的记录。

看看这个 post: Cost of Inserts vs Update in SQL Server

更新在更新之前进行了额外的查找:因此您必须查找行后插入。

插入您只是追加到 table 的末尾。

我认为正在发送附加信息以供查找。个人不是 DBA,但上面的 post 可以给您一些见解。