Bei extrem großen Datensätzen kann die fetchAll Methode Probleme bereiten, da alle Daten in ein einziges Array geladen wird - also gleichzeitig alles im Arbeitsspeicher gehalten wird.
Ruft man fetch() einzeln auf, entspricht dies dem Vorgehen eines Iterators.
Ich bin am überlegen ob man hier mit SPL nicht eine noch einfachere Syntax bauen könnte.
Informationen dazu unter http://www.phpro.org/tutorials/Introduction-to-SPL.html#8