in reply to bind_columns OR fetchall_arrayref
bind_columns and fetchall_arrayref are really two different ideas.
bind_columns allows the database to cache statements, so your select statements are not repeatedly reprocessed.
fetchall_arrayref , more generally fetchall , has to do with getting all the data at once, as opposed to row by row ( batch vs atomic ).
My two cents,.. if you are only stitting data to a web page , and not doing any more processing, a row by row method may be better .. no need to fill up memory with unneeded array.
Also, I get better performance results from efficient db table setup ... are there duplicate items in columns ? smaller tables may be quicker.