我需要运行一个PHP循环100,000次(每次脚本运行大约10,000次),每个循环大约有5次MySQL更新。当我运行这个循环50次时,它需要3秒。当我运行这个循环1000次时,大约需要1300秒。正如你所看到的,随着更多的更新,MySQL的速度变慢了很多。
这是一个更新示例:
mysql_query("UPDATE table SET `row1`=`row1` +1 WHERE `UniqueValue`='5'");这是由PHP随机生成的,但我可以将其存储在一个变量中,并每隔n个循环运行一次。
有没有办法让MySQL和PHP以一致的速度运行( PHP是否存储隐藏变量?),或者拆分脚本?
注意:我运行这是为了开发的目的,而不是为了生产,所以将只有一台计算机访问数据。
发布于 2010-04-21 07:18:46
使用prepared statements。它们的两个主要优点之一是重复查询更高效。
发布于 2010-04-21 07:41:39
使用这样的东西应该会加载得更快:
mysql_query("UPDATE table SET `row1`=`row1` + 1 WHERE `UniqueValue` IN (5, ... 10)");当然,假设您在uniqueValue上有一个索引。您可以使用默认设置创建最大8MB的查询,但现在1MB应该足够了。这将是一个巨大的查询,但速度要快得多。
你也可以暂时完全禁用索引更新,这也会让事情变得更快一些:
ALTER TABLE table DISABLE KEYS;
ALTER TABLE table ENABLE KEYS;发布于 2010-04-21 07:10:03
关闭auto_commit并在N次之后显式提交事务(如果您正在使用InnoDB表)。
https://stackoverflow.com/questions/2679294
复制相似问题