Here is the logic behind it. The cache tables stores/saves the results of your queries. So instead of having to run query X every single time, you store the results of query X in the cache table. So all you have to do is retrieve the results. Instead of saving the cache to your database, you could/should if you can, store them in memory using modules such as [Redis][2] (maintained by [Berdir][3]) or [Memcached][1] which will retrieve the values much faster than using/querying the database. [1]: https://www.drupal.org/project/memcache [2]: https://www.drupal.org/project/redis [3]: http://drupal.stackexchange.com/users/31/berdir