我在for循环中运行mysql select queries 3500次,并对PHP中的查询返回的值执行操作。该过程需要16秒才能执行循环。任何减少执行时间和提高性能的建议。谢谢!
答案 0 :(得分:5)
尽量减少查询量,您真的需要3500个查询吗?或者您可以在一次调用中选择所有行吗?
如果没有,您可以通过使用预准备语句获得一些性能PDO为您提供了一个易于使用的界面。
http://dk2.php.net/manual/en/book.pdo.php
http://dk2.php.net/manual/en/pdo.prepare.php
如果需要更具体,请粘贴一些代码:)
答案 1 :(得分:2)
重构你的MySQL选择,这样你只执行一次,而不是3500次。告诉我们有问题的查询,我们也许可以帮助您做到这一点
答案 2 :(得分:0)
我遇到了和你一样的问题。
在操作期间打开的mysql连接数量至关重要。尝试在一个连接中执行所有操作。如果需要多个连接,请改用mysql_pconnect。
避免使用mysql无法缓存的命令。 (例如NOW())有关此类命令的列表,请查看此处的链接:http://dev.mysql.com/doc/refman/5.1/en/query-cache-operation.html 我通过将查询从实时更改为每小时来实现此目的。
尽可能避免使用大型语句,尝试将其分解为较小的语句并使用代码将它们绑定在一起。声明越小,缓存越容易,从而带来更好的性能。
最后,如果您需要快速解决方案,memcached是一个非常好且快速实施的解决方案。
一般准则是,如果你能执行更少和更简单的陈述,那就更好了。
答案 3 :(得分:0)
使用选择查询,其中键入(val1,val2,....,val3500) 这样,您将只执行两个查询,而不是3500