有人可以解释什么时候使用这个好习惯?我知道以前有人问过,但阅读很多文章没有帮助,特别是当人们在不同情况下使用这种方法时.我做了一些理论上的情况,有人可以告诉我使用sql_NO_CACHE是否有益.谢谢,我对于一个重复的问题道歉.我真的很困惑
说一个网站存储其配置(即站点名称,站点描述,关键字),并在每个页面上查询请求来提取每个页面上所需的信息.
>在登录检查期间选择一个userID,查询只在登录检查过程中运行.
>从表a中选择一些数据,以更新表b中的一个字段,如果在表a的select上使用sql_NO_CACHE?
谢谢.
只需在SELECT语句的SELECT部分和字段列表之后添加sql_NO_CACHE.下面的第一个查询将使用查询缓存,如果它被启用并且查询被缓存:
SELECT * FROM table WHERE search= 'keyword'; //lets take 1ms
SELECT sql_NO_CACHE * FROM table WHERE search= 'keyword'; //lets take ~0.2ms at 2nd time
当对查询进行基准测试时,这是特别有用的;如果查询缓存启用,尽管第一个查询可能需要一些时间,第二个和后续的查询几乎是即时的.通过使用sql_NO_CACHE,您可以确保查询缓存不被使用,并可以安全地比较结果时间.
sql_NO_CACHE提示会关闭特定查询的MysqL内置查询缓存机制.您可以通过对高度动态的查询(例如关键字搜索或仅在夜间运行的报表)使用此提示来帮助MysqL提高查询缓存的效率.
确保查询缓存已打开,否则不需要此命令.
sql_CACHE和sql_NO_CACHE选项会影响查询结果缓存在查询缓存中.如果sql_CACHE可缓存,并且query_cache_type系统变量的值为2或DEMAND,则sql_CACHE将通知MysqL将结果存储在查询缓存中.使用sql_NO_CACHE,服务器不使用查询缓存.它既不检查查询缓存,查看结果是否已被缓存,也不缓存查询结果. (由于解析器中有限制,空格字符必须在sql_NO_CACHE关键字之前和之后;非空格(如换行符)会导致服务器检查查询缓存以查看结果是否已被缓存.)
如果启用了“CACHE”,并且数据库中的数据被动态更新,即不能依赖db数据高速缓存,则可以使用NO_CACHE,例如:存储用户密码哈希,我们不能依赖于CACHE,因为频繁数据更改的可能性
更新有用的场景
1)强制不要使用缓存来测试查询速度