我從來沒有理解這一點:在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