每隔一行返回 SQL 查询
Returning every second row of an SQL query
我正在使用一个应用程序,该应用程序使用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 中,我会做一些类似模选择来返回备用行的事情,但我想不出在当前框架中做到这一点的方法。
任何想法将不胜感激。谢谢。
<?
$row = 1;
WHILE QUERY {
if ($row % 2 == 0) {
echo "Yourstuff";
} else {
//Nothing
}
$row++;
}
?>
这应该可以帮助您考虑解决方案。也许不适合您,但我希望它对您有所帮助......每使用三分之一$row%3,依此类推...
尝试:
$i = 0;
foreach($row as $data){
if($i == 1){
//Do whatever with your 2n record
$i++;
}
if($i > 1){$i = 0;} //Reset the counter
}
每隔第二行返回一次也不是理想的解决方案。您可以使用缓存。
最简单的方法是将表缓存到另一个表。定期配置自动 cron 作业。
datas
datas_cache ( Only Results )
如果你想要更专业的解决方案,你需要将你的结果缓存到文件中,可以使用JSON
我最终设法选择了上面指定的行。
但是,这不是我遇到的问题的可接受的解决方案,因此我决定尝试生成我的图形服务器端,以尝试完全避免该问题。在服务器上生成具有如此多数据点的图表似乎是合乎逻辑的,只需将图像向下推送到 html5 画布或类似的东西。将为此尝试pChart。无论如何,感谢所有响应者。
- 每隔一行返回 SQL 查询
- 返回并扔在一行上,不带分号
- 在一行中返回相反的布尔值
- js - 如何在一行中写入 match() 的访问返回值
- 如何让 javascript 保持,直到函数返回一个值,然后继续下一行
- JavaScript 在一行上定义并返回一个变量
- 在一行中返回来自三元的结果(JavaScript)
- objectId上的PFQuery.find在分析JavaScript SDK(云代码)中未返回唯一行
- GoogleSheets:如何使自定义函数的返回值溢出到一行中
- jqgrid 自定义格式化程序:自定义格式化程序始终返回网格的最后一行.为什么
- 在弹出窗口中为每一行返回动态数据
- 为什么当返回值在另一行时,Javascript返回语句不能工作?
- 为什么Mongoose's JavaScript在同一行中有返回和回调?
- 如何在一行中初始化和返回对象
- 一行箭头函数,返回多个
- Php mysql只返回最后一行,当我使用自动刷新
- 需要一种优雅的方式来根据输入改变一行if语句的返回结果
- 从ajax请求返回时,让jQuery在DIV中创建一行新行
- 为什么返回的值应该与JavaScript中的return语句在同一行
- 我怎样才能逐行读取HTML文件,并用Javascript为每一行返回document.write() ?