Given that your query does not have any WHERE clause or HAVING clause to limit the number of rows, the query is going to do a table scan, so indexes are probably not of going to be much help. If you are doing this select frequently, assuming the table is not very large, it should not result in any physical IO's; just logical IOs. How many rows does the table have?

Your best bet is to turn statistics on to see what is going on. I don't think your idea about caching the table is not going to help much either - but I am only guessing; first you need to find where the bottleneck is. Query plan and statistics will help you do that.