【发布时间】:2016-09-24 10:22:52
【问题描述】:
以下两种方法中哪一种在向表中插入大量行时会更快。
查询方法一:逐一执行查询。
INSERT INTO tbl_user(id, name, number) VALUES(NULL, 'A', '9999999999');
INSERT INTO tbl_user(id, name, number) VALUES(NULL, 'B', '9999999999');
INSERT INTO tbl_user(id, name, number) VALUES(NULL, 'C', '9999999999');
查询方式二:一次查询。
INSERT INTO tbl_user(id, name, number) VALUES(NULL, 'A', '9999999999'),
(NULL, 'B', '9999999999'),
(NULL, 'C', '9999999999');
【问题讨论】:
-
方法2,因为它只执行一次。
-
方法2比第一种快
-
我们在这里展示了有多少人不知道发生了什么。您想要一一执行。你永远不想做第二个选项。为什么?因为如果您将第一个方法包装在事务块中并使用准备好的语句 - 您将永远不会因为
max_packet_size而遇到错误。选项 2 也需要更多的资源来解析。你总是想避免这种情况,如果发生任何不好的事情,调试也会变得更加困难。因此 - 选项#3 是最快的。在开头添加BEGIN TRANSACTION,在末尾添加COMMIT。祝你好运。
标签: php mysql database performance