1、mysql默认的query_cache是打开的,第一次查询走的是数据文件,第二次就是query_cache,查询方式:show variables like '%query_cache%',如果数据更新会重新缓存。
2、如果mysql使用的数据引擎是innodb那么第一次查询走数据文件,第二次buffer_pool也比查询数据文件要快。
Sql语句第一次查询慢的原因不仅仅是因为执行计划没有被缓存这么简单,有时候你会发现Sql语句重用了执行计划,但是第一次查询还是很慢。
最主要的原因是第一次查询的时候,mysql会将查询出的部分数据和索引从磁盘加载到内存作为缓存,而第二次查询的时候就直接从内存缓存中拿出数据了,自然要比从磁盘上加载数据快很多。
mysql 会定期清除缓存,所以一段Sql语句如果长期不执行后,就需要从磁盘从新加载数据。
设置缓存大小:比如设置个20MB:SET GLOBAL QUERY_CACHE_SIZE=20000000;