SQL_NO_CACHE
首先要知道Mysql中SQL_NO_CACHE的真正意思,它是The query result is not cached.(“禁止SQL结果集被缓存”),而不是“禁止从缓存中读结果集”,由此可以看出,你的第一次查询没有带SQL_NO_CACHE,所以结果集就被query cache起来了,那么此后的所有这个查询,不管是带不带上SQL_NO_CACHE都会从cache里取,所以才会看起来无效,如果要重新测试,就在查询前先执行一下"FLUSH QUERY CACHE",清空一下query cache就行了。然后再带上SQL_NO_CACHE选项,就没问题了
SQL_CACHE
必须先设置query_cache_size
以及设置query_cache_type ,其中
query_cache_type 这个可以被设置为 (只能是数字) 选项 含义
0 (OFF, 不缓存或重新得到结果)
1 (ON, 缓存所有的结果,除了 SELECT SQL_NO_CACHE ... 查询)
2 (DEMAND, 仅缓存 SELECT SQL_CACHE ... 查询)
SQL_CALC_FOUND_ROWS
可以查询出总共的行数,不用先count(*)
不过务必要注意在使用前看看是否适合,根据表的引擎,数据量,索引都有关系。