1

我有一个来自 MySQL 表的值的数据集,然后将其绘制成图表。每个数据点之间应该有一个固定的时间段,例如:

数据点 1:1 - 日期/时间:2013-02-11 09:00:00

数据点 2:2 - 日期/时间:2013-02-11 09:05:00

数据点 3:3 - 日期/时间:2013-02-11 09:10:00

然而,这并非总是如此。如果我们可以为我们的图表包提供一组数据值、开始时间和间隔时间,它可以比我们提供值列表和日期/时间列表更快地处理和显示图表。

在缺少数据点的情况下,用 0 值预填充或后填充 MySQL 查询的最有效方法是什么?例如,如果缺少数据点 2,则使用上面的数据,我可以使用什么查询来让 MySQL 返回以下数据集:

数据点 1:1 - 日期/时间:2013-02-11 09:00:00

数据点 2:0 - 日期/时间:2013-02-11 09:05:00

数据点 3:3 - 日期/时间:2013-02-11 09:10:00

提前致谢

4

2 回答 2

0

我不会将垃圾输入数据库,您可以在应用层进行预处理,它应该更快更高效。

如果您为每个插入执行 IO,那么 IO 将是一个巨大的瓶颈。在应用程序层中排序和插入虚拟点,例如 Java 可能会更快(您可以在呈现图表之前执行此操作)。

此外,假设您有一个以 CSV 格式记录数据的文件,插入使用LOAD DATA将非常快(可能比预处理每一行并逐行插入快 20 倍)

于 2013-02-11T10:23:03.083 回答
0

在这种情况下,我会将代码中的数组/哈希/列表初始化为我的零/空值,然后覆盖从数据库接收数据的值。

如果这需要在服务器端完成,您可以创建一个临时表,存储您感兴趣的时间间隔内的所有可能日期,然后将当前查询加入其中。

此处的第二个示例:在 sql 结果中填充空日期的最直接方法是什么(在 mysql 或 perl 端)?

于 2013-02-11T15:01:19.017 回答