gpt4 book ai didi

php - 如何使用自定义规则选择多个数据库行?

转载 作者:行者123 更新时间:2023-12-01 00:20:30 25 4
gpt4 key购买 nike

我目前有一个包含两列的大表(数百万行):时间戳(毫秒)和值。

我希望能够以固定时间增量使用仪器的最新值在 PHP 中生成 CSV 文件。举个例子:

Table: data

timestamp value
50 1
700 2
1500 3
2100 4
3100 5
3900 6

假设固定时间增量为 1 秒(1000 毫秒),输出应如下所示:

timestamp  value
1000 2
2000 3
3000 4
4000 6

我目前正在发出以下形式的许多查询:

SELECT * FROM `data` WHERE timestamp<=2000 ORDER BY `timestamp` DESC LIMIT 1

然后我将每一行输出到 php://output,用户的浏览器会在文件创建时下载它。然而,考虑到所有查询,这种首先生成数据的方法被证明过于缓慢。

我怎样才能加快这个过程?我想我可能应该将大部分处理转移到 MySQL 以减少进程间通信,但我不确定该怎么做。

最佳答案

您希望最大时间戳上的值等于或小于增量 1000 的倍数。您可以自动化您的过程:

select 1000 * ceil(lt.timestamp / 1000) as timestamp, value
from data lt
where not exists (select 1
from data lt2
where lt2.timestamp > lt.timestamp and
lt2.timestamp <= 1000 * ceil(lt.timestamp / 1000)
);

data(timestamp) 上的索引应该会有帮助。

你不能完全在 MySQL 中完成你的公式,因为 MySQL 在这些类型的子查询中不支持 limit

关于php - 如何使用自定义规则选择多个数据库行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29760843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com