数据库查询速度


Database query speed

我有一个连续运行几个小时的php脚本,每隔几秒钟我就有新数据要保存在数据库中。因此,我可以选择在可用时存储新数据,或者将它们收集到数组中并在我有 100 或 500 个数据后保存它们。如果我是对的,php 无法向数据库发送多个插入查询,因此上面的两个选项需要完全相同的时间来保存。

是我错了还是一个比另一个快?也许还有比这些更快的第三种解决方案?

可以使用以下语法一次插入多行:

INSERT INTO foo
( a, b, c)
VALUES
( 1, 2, 3),
( 4, 5, 6),
( 7, 8, 9)
或者,您可以在获取数据时将数据

转储到分隔文件,当您到达文件中的 100 行左右时,请使用加载数据 INFILE (http://dev.mysql.com/doc/refman/5.5/en/load-data.html) 进行插入。 我发现加载数据INFILE对于导入大量数据非常有效。

两者都不会更快。但是,如果您使用批量插入并在事务中包装插入,它将明显更快。

BEGIN TRANSACTION;
INSERT INTO ...
INSERT INTO ...
INSERT INTO ...
COMMIT;

这仅在 storange 引擎允许事务时才有效。所以最好使用InnoDB而不是MyISAM。

我重新命令脱机批处理存储过程选项。这样,您将:

  • 否则保存每次脚本调用发生的连接时间(我假设是这样,但我没有看到您的脚本)
  • 节省 php 和 mysql 之间的通信时间
  • 保存解析解释,因为所有数据都将立即在 sql 引擎中处理

RGDS。