Php 用于昂贵查询的MySQL查询缓存?

Php 用于昂贵查询的MySQL查询缓存?,php,mysql,caching,Php,Mysql,Caching,我有一个查询,返回最畅销的10种产品,并在主页上使用: SELECT a.id, a.title, SUM(b.sold) as 'sold' FROM products a LEFT JOIN stock b ON b.product_id = a.id GROUP BY a.id ORDER BY sold DESC LIMIT 10 这些信息不需要是最新的-它只需要更新,也许一天一次。所以我有两个问题,真的: 1) 考虑到这是在评估每个产品的销售总额(从每个产品都有多行的库存表),这是一

我有一个查询,返回最畅销的10种产品,并在主页上使用:

SELECT a.id, a.title, SUM(b.sold) as 'sold' FROM products a
LEFT JOIN stock b ON b.product_id = a.id
GROUP BY a.id ORDER BY sold DESC LIMIT 10
这些信息不需要是最新的-它只需要更新,也许一天一次。所以我有两个问题,真的:

1) 考虑到这是在评估每个产品的销售总额(从每个产品都有多行的库存表),这是一个计算成本很高的查询,还是一个大型数据库

2) MySQL能否缓存此查询并每天只更新一次?我知道它有一个默认情况下使用的查询缓存,但根据我所知,每次售出商品的数量发生变化时,该查询都会失效


老实说,我只是在寻找更有效的方法。

我要做的是将其缓存在查询数据库的代码中。保留上次查询的时间戳,如果时间戳足够近,则返回缓存的结果,而不是运行查询。你也可以使用像memcached或Redis这样的缓存系统。。。一旦你设置好了,你可能会找到100个其他地方可以使用它


或者,如果主页上没有其他动态内容,您可以将主页转换为静态HTML文件,每天生成一次。简单快速。

我要做的是将其缓存在查询数据库的代码中。保留上次查询的时间戳,如果时间戳足够近,则返回缓存的结果,而不是运行查询。你也可以使用像memcached或Redis这样的缓存系统。。。一旦你设置好了,你可能会找到100个其他地方可以使用它

或者,如果主页上没有其他动态内容,您可以将主页转换为静态HTML文件,每天生成一次。简单快速。

1)它的成本与库存表中的行一样高

2) 不,mysql没有类似的东西。要缓存单个查询,应使用应用程序缓存。这是一个相当普遍的需求,当然,您如何做到这一点取决于您的应用程序及其体系结构。

1)它的成本与库存表中的行一样高

2) 不,mysql没有类似的东西。要缓存单个查询,应使用应用程序缓存。这是一个相当常见的要求,当然,您如何做到这一点取决于您的应用程序及其体系结构。

使用更新静态表以按计划使用昂贵查询的结果如何?使用更新静态表以按计划使用昂贵查询的结果如何?