General speaking yes for read-only applications (until MySQL 5.7, it's deprecated since version 8.0), it enables identicalequal SELECT
s to return data extremely fast if identical calls are already stored in cache. You should consider that:
- Only identicalexact same clauses can benefit from the cache engine (no spaces, no comments, no actual differences in
WHERE
expressions); - If you are updating often the table, you will not benefit much of it, since the queries get invalidated, and the invalidation algorithms can also reduce performance, in some cases.
Excellent alternatives to improve performance are:
- External caching engineengines (i.e. Memecached or Redis, my favorite, https://redislabs.com/wp-content/uploads/2016/03/15-Reasons-Caching-is-best-with-Redis-RedisLabs-1.pdf)
- ProxySQL (since MySQL 8.0) on which I have no experience. Read more https://mysqlserverteam.com/mysql-8-0-retiring-support-for-the-query-cache/
I think also if you combine those with a good web server like NGINX or Apache2 and aan HTTP accelerator like Varnish you can fly.
As I know, these are also the best current practices but I might have ignored something else, please share it in case.