我有这个数据库:
computername, computerlocation starttime endtime
nameA, locationA, 1457625600, 1457625800
nameB, locationB, 1457625300, 1457625100
nameC, locationA, 1457625600, 1457625900
数据库> 500,000行,包含计算机登录时的内容,然后注销。
目前在PHP中我运行一个循环,根据选定的小时数和日期范围找到unix时间戳,例如:
它会在一段时间(大约一个月)内每天找到这些每小时的时间戳,并将它们存储到一个数组中。
然后我循环数组,每次查询SQL,计算有关时间在开始时间和结束时间之间的行数,然后按位置分组。
我知道有多少台计算机在给定位置(来自单独的表),并且从上面的查询中实际使用了多少台计算机,使用这些数据我按小时计算出利用率,然后将其绘制到曲线图。
我的目标是:
我发现的问题是在所选时间范围内循环每一小时,而白天选定的小时数会导致数千次查询。有什么方法可以使用MySQL更有效地实现这一目标吗?
我尝试过使用CASE语句,但如果计算机登录多个小时,CASE将只承认其中一个小时。
我是否应该以不同的方式更详细地存储开始时间和结束时间?