I've got a basic codeset like this (inside a controller):

```
$sql = 'select * from someLargeTable limit 1000';
$em = $this->getDoctrine()->getManager();
$conn = $em->getConnection();
$statement = $conn->prepare($sql);
$statement->execute();

```

My difficulty is that when the resultset is only a few records, the memory usage is not that bad. I echoed some debugging information before and after running the **$statement->execute();** part of the code, and found for my implementation that I have the following:

```
pre-execute... rowCount :: 0 memory: 49.614 MB
post-execute... rowCount :: 1000 memory: 50.917 MB

```

When moving this up from 1000 records, to 10k the difference in MB usage grows to 13 MB

```
pre-execute... rowCount :: 0 memory: 49.614 MB
post-execute... rowCount :: 10000 memory: 62.521 MB

```

Eventually, retrieving around 50k records I get close to my maximum memory allocation:

```
pre-execute... rowCount :: 0 memory: 49.614 MB
post-execute... rowCount :: 50000 memory: 114.096 MB

```

With this implementation, there is no way I could write a controller (or even command for that matter) that will allow me to retrieve a CSV of data. Sure, 50k+ entries sounds a lot and the question begs why, but that's not the issue.

My ultimate question is: Is it possible to tell the DBAL/Connection or DBAL/Statement to, when executing, buffer the data inside SQL rather than in PHP in it's entirety. For instance, if I have 10 million rows, to only send the first say 10k rows to PHP... let me look through them by way of **@statement->fetch();** and when the cursor gets to the end of the 10k, truncate the array and fetch the next 10k from the DB?