in reply to Using large result sets from a database
A simple way to deal with this is to dump the results to file using CSV.pm and then talk to that file. We did that (at a banking ASP) with success.
The appeal of this is threefold:
1) Sucking data from a file is trivial and much quicker than rerunning a query.
2) The data now has state -all you need to do is pass around a filehandle
3) the data is static. Changes to the base data since load are not reflected, reducing user confusion.