php - 缓存大型 SQL 查询 - 构建的最佳方式?

标签 php mysql caching optimization

让我举例说明我的问题。假设我有一个名为 users 的表和一个名为 payments 的表。要计算用户的总余额,我会使用查询来获取特定日期后的所有付款,然后将结果缓存一段时间。

但是,我想知道,由于这种性质,在用户表中有一个名为 balance 的列是否是个好主意,然后当缓存过期时,我使用不同的查询以从较短的时间内收集付款,然后将此金额添加到 balance 列中的任何内容?

最佳答案

To calculate a user's total balance,

您可以创建一个始终包含用户当前余额的附加表。如果为用户添加了新的付款方式,则该列也需要更新。执行一笔交易,以便添加付款和更新总余额是一致的。

如果您需要更加区分,可以在用户关系旁边保留一个日期列,表示您需要能够对其进行计算的时间间隔。例如。能够提供过去 View 的周数或月数。

如果您需要更大的灵 active ,您可以在一段时间后将现有付款压缩为一个总值,并将其存储到与用户相关并保留日期列的余额表中。

然后您可以将它与尚未压缩/压缩的日期的“实时”付款表结合起来。然后使用聚合函数对总余额求和。如果您需要保留具有更多详细信息的最新数据,这可能会给您带来两全其美的效果,您可以在一段时间后移出数据存储,只保留统计值。

关于php - 缓存大型 SQL 查询 - 构建的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14145659/

相关文章:

php - Laravel 缓存与路由模型绑定(bind)?

java - 为什么编译器/JVM 不能将自动装箱设置为 "just work"?

php - 使用 Twitter API 已经开始给出一个 Sorry Page does not exist 错误,即使它早些时候工作

java - com.mysql.jdbc.exceptions.jdbc4.CommunicationsException : Communications link failure

php - sql查询需要很长时间才能完成

php - 重复键上的 Mysql 仅当 BlahVAl < BlahRowVal 时更新表

ios - AlamofireImage:如何清除所有图像缓存?

PHP PDO 数据库错误特殊字符

php - 提取字符串中两个字符之间的子字符串 PHP

php - 最佳实践 : where to put the PHP code?