This document describes an automatic query caching system called Exchequer that caches intermediate and final results of queries to improve query response times. Exchequer is closely coupled with the query optimizer to make mutually consistent caching and optimization decisions. It uses an incremental cache management algorithm to determine what to cache, taking into account what other results are already cached. Experimental results show that Exchequer improves query response times by over 30% compared to other systems and can achieve the same performance with 10 times less cache size.