我正在使用一个应用程序,它使用phpActiveRecord
和 mySQL 从传感器网络中提取数据并将其绘制到客户端上的许多 flot.js 图表上。
用户可以选择几个时间范围来影响图表显示的数据范围。2hrs, 24hrs, 3 days and 1 week.
传感器每 60 秒向数据库发布一次,因此在绘制图形时,查询会提取now and DATE_SUB(CUR_DATE - INTERVAL ? DAY)
where 之间的所有行?是 1、3 或 7 等。
但是,这会导致返回大量行,(60,000 + for the full week!)
并导致巨大的延迟和服务器错误。
我知道我可以大量增加php.ini
文件中可用于查询的最大内存,但这并不是一个好的解决方案,也不能解决速度问题。
我的问题是,有没有一种方法可以根据用户希望查看的间隔长度轻松地从所需日期范围中仅选择第二行或第三行?
在 C 或 Java 中,我会执行类似模选择的操作来返回备用行,但我想不出在当前框架中执行此操作的方法。
任何想法,将不胜感激。谢谢。