在阅读了有关PHP的PDO fetchall()
函数对性能的影响的几篇文章之后,我很好奇是否还有另一种无需调用fetchall()
即可完成相同结果的方法。
为了解释,大多数人都同意fetchall()
倾向于占用大量资源。就我而言,我认为这不会成为太大的问题。是的,我必须从数据库中提取整个表并将其显示给用户,但是最多只能有100行。我认为这不会成为问题。但是,假设地,如果我需要拉100,000行,哪个是最佳的解决方案?
最佳答案
假设,如果您需要在单个响应中输出所有100,000行,则应将PDO::MYSQL_ATTR_USE_BUFFERED_QUERY
设置为false
,执行查询,并使用fetch一次迭代结果集一行。详细地说,如果PDO::MYSQL_ATTR_USE_BUFFERED_QUERY
设置为true,则无论您是否调用fetchAll(),php都会缓冲整个结果集。
这样做的好处是,您可以极大地减少脚本的最大内存消耗,并且可以更快地开始流输出,尽管完成完成的总时间可能需要也可能不需要更长的时间。
我忽略了在这种极端情况下应该考虑的其他事项,例如输出缓冲等。
关于php - PDO fetchall()性能注意事项?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13221861/