mysql缓存能否解释错误的查询结果?

mysql缓存能否解释错误的查询结果?,mysql,Mysql,编辑:好的,这都是我的错误。我错误地重置了最小价格值。数据库仍然有旧的错误值。每当我在应用程序中单击某个产品以获取其id并在数据库中查找它时,aftersave钩子就会触发对最低价格的重新计算,从而将其更改为新的正确值。我错误地认为在数据库中查找产品会以最低的价格更改缓存值。我将删除这个问题,因为它不太可能帮助其他人,但人们已经回答了。谢谢你,如果我浪费了任何人的时间,我很抱歉 最近,我使用php脚本将我的表产品的一个字段(least_price)的所有值设置为新的(更高的)值。现在我运行这个查

编辑:好的,这都是我的错误。我错误地重置了最小价格值。数据库仍然有旧的错误值。每当我在应用程序中单击某个产品以获取其id并在数据库中查找它时,aftersave钩子就会触发对最低价格的重新计算,从而将其更改为新的正确值。我错误地认为在数据库中查找产品会以最低的价格更改缓存值。我将删除这个问题,因为它不太可能帮助其他人,但人们已经回答了。谢谢你,如果我浪费了任何人的时间,我很抱歉

最近,我使用php脚本将我的表
产品
的一个字段(
least_price
)的所有值设置为新的(更高的)值。现在我运行这个查询:

SELECT Products.*
FROM products Products 
WHERE 
(
    Products.least_price > 240 
    AND Products.least_price < 500
) ;
选择产品*
从产品
哪里
(
产品。最低价格>240
和产品。最低价格<500
) ;
结果集包含一些新的
最低价格
值高于500的产品。结果将显示最小价格字段的错误值(我假设为旧值)。如果我用
选择id=123
的产品查询一个新的最低价格高于500的特定产品,它将正确显示(较新/较高的)
最低价格。下次运行上述第一个查询时,结果集将缩小一个产品,缺少的产品是我单独查询的产品

这种行为可以用查询缓存来解释吗?我试图运行
RESET QUERY CACHE
,但遗憾的是,我没有足够的权限使用该托管提供商执行此操作。我还可以做些什么来提醒mysql,
least\u price
属性已更改


我在一台x86_64 debian linux gnu机器上使用的是mysql 5.6.38-nmm1-log和innodb 5.6.38。不,这不是由于查询缓存造成的

查询缓存不缓存行引用,而是缓存返回的实际结果。因此,它不能包含与查询中的条件不匹配的结果

如果查询使用的任何表被修改,则会刷新查询的缓存结果。因此,它永远不会返回过时的数据

有关MySQL查询缓存工作方式的完整详细信息,请参阅


如果
least\u price
列已编制索引,则不正确的结果可能是由于索引已损坏,请尝试修复该表。

不太可能。如果这是正常行为,DB将非常无用。请尝试在where子句中使用between。为什么在只有一个表的查询中使用别名表名?要查看它是否真的与缓存相关,您可以尝试使用
sql\u no\u cache
修饰符运行查询:
选择sql\u no\u cache Products.*FROM…
您是对的,它当然不是缓存。(请参见我的原始问题中的编辑块)。谢谢你的评论。标记问题,让版主关闭它。谢谢你的建议!不幸的是,我在尝试修复时遇到了这个问题:
表的存储引擎不支持修复