我们正在构建一个仓库库存管理系统,并有一个库存移动表,用于记录每个产品和每个存储位置的库存进出系统。IE
- 10 件产品 A 被接收到位置 A
- 10 件产品 A 被移至位置 B 并从位置 A 移除。
- 从位置 B 移除(出售)1 个单位
... 等等。
这意味着我们要计算出每种产品在每个位置存储了多少;
"SELECT SUM('qty') FROM stock_movements GROUP BY location, product"
(我们实际上使用 Eloquent,但我以 SQL 为例)
随着时间的推移,这将意味着我们的库存变动表将增长到数百万行,我想知道如何最好地管理它。我能想到的选项:
- 对上面分组的行求和,并接受它可能会随着时间的推移而变慢。我不确定在实际开始导致任何性能问题之前需要多少行。当通过我们的 API 请求整个库存日志时,必须对每个产品的每一行求和,因此这将编译为一个相当大的计算。
- 在 cron 上每天/每周/每月等创建汇总行的快照,然后即时添加最新行的总和。
- 创建一个单独的表格,其中包含实时库存水平,每次库存移动都会添加和减去该水平。库存变动表显示所有变动的完整历史,而新表仅显示实时金额。我们将在这里使用数据库事务来确保它们保持同步。
是否已经有一种明确的最佳实践方式来处理这种事情?很想听听你的想法!