返回SQL查询的每第二行

bis*_*lad 6 javascript php mysql flot phpactiverecord

我正在使用一个应用程序,它使用phpActiveRecord和mySQL从传感器网络中提取数据并将其绘制到客户端上的一些flot.js图表​​上.

用户可以选择几个时间帧来影响图形显示的数据范围. 2hrs, 24hrs, 3 days and 1 week.

传感器每隔60秒发布到数据库,因此在绘制图形时,查询会在所有行之间拉入now and DATE_SUB(CUR_DATE - INTERVAL ? DAY)?是1,3或7等

但是,这会导致返回大量行,(60,000 + for the full week!)并导致巨大的延迟和服务器错误.

我知道我可以大量增加php.ini文件中可用于查询的最大内存,但这不是一个好的解决方案,并且无法解决速度问题.

我的问题是,有没有一种方法可以根据用户希望查看的间隔长度,轻松选择所需日期范围内的每一秒或第三行?

在C或Java中,我会做一些像模数选择来返回备用行但我想不出在当前框架中执行此操作的方法.

任何想法,将不胜感激.谢谢.

Top*_*ons 0

<?
$row = 1;
WHILE QUERY {
    if ($row % 2 == 0) {
        echo "Yourstuff";
    } else {
        //Nothing
    }
    $row++;
}
?>
Run Code Online (Sandbox Code Playgroud)

这应该可以帮助您考虑一种解决方案..也许对您来说不是完美的解决方案,但我希望它有所帮助...每三分之一使用 $row%3 等等...