gpt4 book ai didi

mysql - 如何根据时间戳耦契约(Contract)一个表中的数据点?

转载 作者:行者123 更新时间:2023-11-29 16:01:48 26 4
gpt4 key购买 nike

我有一个很大的 mySQL 表,其中包含各种数据的值(全部具有不同的 data_id)和时间戳(以毫秒为单位的 unix 时间戳)。我尝试为所有这些数据构建一个(实时)绘图仪,并且希望能够根据水平轴上的任何其他数据绘制垂直轴上的任何数据。我遇到的问题是如何根据时间戳有效地耦合数据点。

数据集非常大,记录频率约为 10 Hz,我想要每 1-5 分钟一个数据点。我已经成功地进行了一次(有点)高效的 SQL 调用来获取每 1 分钟的平均值和平均时间戳:

SELECT AVG(value), AVG(timestamp)
FROM
(
(
SELECT value, timestamp
FROM database
WHERE
data_id = 100 AND
timestamp < ... and timestamp > ...
ORDER BY timestamp DESC
) as data
)
GROUP BY timestamp DIV 60000
ORDER BY timestamp DESC;

但是,现在我希望能够绘制 data_id 100 与 data_id 200 的关系图,而不是 data_id 100 与时间的关系图。那么对于大型数据集,如何将 data_id 100 和 200 的值耦合到大约 1 分钟的时间步长呢?

我已经尝试过以下操作,但 SQL 调用花费的时间太长...

SELECT a.timestamp, a.value, b.value 
FROM
(
SELECT value, timestamp
FROM daq_test.data_f32
WHERE
data_id = 166 AND
timestamp < 1507720000000 AND
timestamp > 1507334400000
ORDER BY timestamp DESC
) a,
(
SELECT value, timestamp
FROM daq_test.data_f32
WHERE
data_id = 137 AND
timestamp < 1507720000000 AND
timestamp > 1507334400000
ORDER BY timestamp DESC
) b
WHERE a.timestamp DIV 60000 = b.timestamp DIV 60000
ORDER BY a.timestamp DESC;

最佳答案

好吧,我不知道这个查询的意义是什么。但我的建议是根据 WHERE 子句中的参数创建索引。

因此,如果您要搜索包含 data_id 和时间戳的记录,最好基于这两列创建复合索引。

此外,最显着的减慢可能是由 ORDER BY 时间戳引起的。您可以解释选择并编辑您的问题,以便我可以通过更正确的编辑来更新答案。

关于mysql - 如何根据时间戳耦契约(Contract)一个表中的数据点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56131021/

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