我有一张表,其中包含以下结构和数据,代表停车位的状态:
id bayID state starttime
1 1 FREE 2013-08-09 09:13:02
2 1 OCCUPIED 2013-08-09 09:15:50
3 1 FREE 2013-08-09 09:33:15
4 1 OCCUPIED 2013-08-09 09:35:10
5 1 FREE 2013-08-09 10:03:22
我现在需要计算一个海湾的平均停车占用时间。由于记录可能有数百万,我正在寻找执行此操作的最佳方法,以便可以快速完成查询平均值。
我的想法是将上表中的数据预处理到另一个已经计算停车时间的表中。这将通过为一个间隔找到一对 OCCUPIED 和 FREE 条目来完成,然后计算开始时间之间的时间差。这可以给我一个这样的结构:
bayID starttime duration
1 2013-08-09 09:15:50 ...
1 2013-08-09 09:35:10 ...
然后我可以在 2 个日期时间之间查询并平均持续时间。
如果这似乎是推荐的方法,我想知道如何创建计算数据集。我想我可以:
- 创建一个触发器,在第一个表中插入后执行,进行计算并在需要时插入另一个表。
- 在第一个表上创建一个视图。不幸的是,我没有足够的 MySQL 知识来知道这是否可能。
在我深入编码之前,有人可以就提议的解决方案给我一些建议吗?它们都可行吗?使用其中一种的(缺点)优势是什么?