有以下字段的“team_sector”表:id、team_id、sect_id、大小、级别
它包含每个“团队”实体的少量记录(用“team_id”字段引用)。每条记录代表球队体育场的扇区(共 8 个扇区)。
现在有必要实现一些搜索:
- 按体育场总规模(SUM(size));
- 最好的质量 (SUM(level)/COUNT(*))。
我可以创建这样的查询:
SELECT TS.team_id, SUM(TS.size) as OverallSize, SUM(TS.Level)/COUNT(TS.Id) AS QualityLevel
FROM team_sector
GROUP BY team_id
ORDER BY OverallSize DESC / ORDER BY QualityLevel DESC
但我在这里担心的是,每次执行查询时都会为每个团队进行计算。这不是太大的开销(至少现在),但我想避免以后出现性能问题。
我在这里看到 2 个选项。
第一个是在“团队”表中创建 2 个附加字段(例如)并在那里存储OverallSize 和 QualityLevel 字段。如果“扇区”表发生更改的信息 - 也更新这些表(使用触发器可能会很好,因为扇区表不会经常更改)。
第二个选项是创建一个提供所需数据的视图。
第二个选项对我来说似乎更容易,但我没有很多使用视图的经验/知识。
Q1:从您的角度来看,最好的选择是什么?为什么?也许您可以建议其他选择?
Q2:我可以创建视图以使其很少进行计算(至少每天一次)吗?如果是 - 如何?
Q3:为此目的使用触发器是否合理(第一种选择)。
使用 PS MySql 5.1,团队总数约为 1-2 千,扇区表中的记录总数 - 总共 6-8 千。我明白,这些数字非常小,但我想在这里实施最佳实践。