in reply to More on selecting rows with DBI...

If your query is going to return a lot of rows, don't use that method. Yes: you asked for *all* of the rows (50_000 or whatever, using fetchall_arrayref), so DBI is going to fetch all of the rows. So now you've sent 50_000 rows between MySQL and yourself, and you've got a lot of data stored in memory. :)

Which isn't too good a thing, meaning that, when you can, you should use the LIMIT offset,rows technique. This way, you're only ever sending rows rows between MySQL and your script.