我正在建立一个虚拟货币系统,因为它是真钱,准确保留数据是一个非常关键的目标。我正在构建我的货币,以便用户钱包没有固定值(“金额”),相反,它们是进出该钱包的所有交易的净额 - 有点像比特币。
所以,如果我正在计算钱包的数量,我的MySQL查询就像这样。
SELECT (
SELECT IFNULL(SUM(`tx`.`amount`), 0)
FROM `transactions` AS `tx`
WHERE `tx`.`to_wallet_id` = 5
) - (
SELECT IFNULL(SUM(`tx`.`amount`), 0)
FROM `transactions` AS `tx`
WHERE `tx`.`from_wallet_id` = 5
) AS `net`
此查询使用net
的汇总数据构建SUM()
值,所有交易朝一个钱包减去所有交易来自 a钱包。最终值表示钱包当前包含的金额。
简而言之,我想知道如何优化我的表格,以便这些查询非常快速且可扩展。
我认为我应该将[from_wallet_id, amount]
和[to_wallet_id, amount]
编入索引,但我很不确定。
答案 0 :(得分:1)
我建议你做以下事情:
[from_wallet_id, amount]
和[to_wallet_id, amount]
)。允许运行从索引中检索所有必要数据的查询。 如果没有帮助,您可以考虑以下选项: