来自unix时间戳边距的统计数据

时间:2016-03-10 13:41:14

标签: php mysql

我有这个数据库:

computername, computerlocation starttime endtime
nameA, locationA, 1457625600, 1457625800
nameB, locationB, 1457625300, 1457625100
nameC, locationA, 1457625600, 1457625900

数据库> 500,000行,包含计算机登录时的内容,然后注销。

目前在PHP中我运行一个循环,根据选定的小时数和日期范围找到unix时间戳,例如:

  • 01/02/2016 9AM
  • 01/02/2016 10AM
  • 01/02/2016 11AM
  • 01/02/2016 12PM
  • 01/02/2016 1PM

它会在一段时间(大约一个月)内每天找到这些每小时的时间戳,并将它们存储到一个数组中。

然后我循环数组,每次查询SQL,计算有关时间在开始时间和结束时间之间的行数,然后按位置分组。

我知道有多少台计算机在给定位置(来自单独的表),并且从上面的查询中实际使用了多少台计算机,使用这些数据我按小时计算出利用率,然后将其绘制到曲线图。

我的目标是:

  • 仅显示指定位置的计算机
  • 选择2个日期(通常相隔一个月,有时更长)
  • 在这些日期内根据白天的特定时间分析计算机使用情况,例如,上午9点至下午5点

我发现的问题是在所选时间范围内循环每一小时,而白天选定的小时数会导致数千次查询。有什么方法可以使用MySQL更有效地实现这一目标吗?

我尝试过使用CASE语句,但如果计算机登录多个小时,CASE将只承认其中一个小时。

我是否应该以不同的方式更详细地存储开始时间和结束时间?

0 个答案:

没有答案