I do something along the lines of what @jarvis suggests, but forgot about it. I have done something like this is the past. In my case I collect a lot of information from posts and store the collected information in the wp_options table. Basically I have a options value that is an array
array(
$post_id => array(
// nested array contains data for post
)
)
This is updated whenever a post is saved. So that instead of doing a query to get the posts I just get the option value.