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;