为什么通过 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 可以给您一些见解。
我认为它会花费更少,因为这是我的命令:
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 可以给您一些见解。