【发布时间】:2019-09-13 12:21:45
【问题描述】:
我正在计算篮球统计数据,并有模型 Stat、User(篮球运动员所在的位置)、Team、Stat_Meta、Game、Season、Substitution。
我有一个名为 statTable 的视图,它可以添加到应用程序的任何其他视图中。 statTable 基本上只是遍历团队中的每个球员并检索每个统计类型的计算(在 Stat_Meta 模型中找到)。在这些计算中,有针对 Stat、Game、Season 等表的查询。当它遍历每个玩家及其所有统计数据时,我们每场比赛大约有 500 个查询(通常我们会经历大约 30 个查询/视图,所以你做数学,这很糟糕)。
我的问题:安装 Laravel 调试栏后,我可以看到在我的测试环境中,加载首页时运行了 3116 个查询,其中 2432 个是重复的。加载也需要很长时间。 那么,我怎样才能重新设计这个查询系统来减少它们的数量呢?
完全披露,我不是 CS 人员,所以效率不是我受过的训练。现在,我非常高兴这甚至可以工作,但不会花费我一只手臂和一个大规模执行所有这些查询(更不用说糟糕的用户体验)。
【问题讨论】:
-
看起来您正在代码中进行计算。最好让数据库服务器进行计算(每组的 SUM/AVG)。