手册指出,"SQL_NO_CACHE“阻止将添加到缓存中。但它没有提到任何关于使用缓存,我可以看到。
我正在尝试对两个版本的查询进行基准测试,但它们已经在没有"SQL_NO_CACHE“的情况下运行了。所以我不知道我的测试是否使用了查询缓存。
"SQL_NO_CACHE“指令是否阻止查询使用缓存,或者仅仅添加到缓存中?
发布于 2012-09-25 05:33:23
MySQL查询缓存是基于查询的完整文本建立索引的,因此在功能上没有区别:即使忽略了指令,带有SQL_NO_CACHE的查询的结果也将存储在与没有SQL_NO_CACHE的查询不同的缓存“槽”中。(实际上,简单地向查询添加一个空间,或者将"SELECT“更改为"select”--例如-也会“关闭”查询缓存,使其再次运行。MySQL查询缓存并不特别复杂。)
尽管如此,通过使用SQL_NO_CACHE运行查询并查看QCACHE_QUERIES_IN_CACHE状态的快速测试证实,SQL_NO_CACHE确实阻止变量存储在缓存中,而查看来源使之看起来似乎SQL_NO_CACHE的存在也将阻止MySQL检查缓存的结果。
https://stackoverflow.com/questions/12576288
复制相似问题