我从来没有理解这一点:在Web开发中,当一个接一个地提取结果是否有意义?在Web应用程序中的数据库光标提取
我的意思是,为什么我应该使用PDOStatement->fetch*()
当我可以使用PDOStatement->fetchAll()
?
我从来没有理解这一点:在Web开发中,当一个接一个地提取结果是否有意义?在Web应用程序中的数据库光标提取
我的意思是,为什么我应该使用PDOStatement->fetch*()
当我可以使用PDOStatement->fetchAll()
?
fetchAll()
会将所有结果存入一个大阵列。
对于非常大的结果集,它可能会超出PHP脚本的内存限制。
纯fetch()
将逐一取出每条记录,中和该危险。
这是我不能使用的唯一原因fetchAll()
我能想到。
当然,但我们通常不会发出像SELECT * FROM oneMillionRowsTable'这样的没有限制子句的SQL语句,至少我从来没有在Web应用程序中看到类似这样的查询。 – 2010-05-09 10:45:57
@Alix既没有我,也不是完全不可想象的发生。我更喜欢'fetch'变体,它的意思是“我的PHP脚本的内存比mySQL服务器的内存更有限”。不过,它可能是'fetchAll'更快,因为它只与服务器交谈一次 - 我不知道,我从来没有测过它。 – 2010-05-09 10:48:13
谢谢Pekka。 =) – 2010-05-09 10:49:54
http://stackoverflow.com/questions/2770630/pdofetchall-vs-pdofetch-in-a-loop – 2010-05-09 10:59:38