填补不完整的MySQL数据集中的空白的最有效方法是什么?

时间:2013-02-11 10:19:26

标签: mysql

我有一个返回的MySQL表中的值数据集,然后将其绘制成图表。每个数据点应该在它们之间有一个固定的时间段,EG:

数据点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

提前致谢

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

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

这里的第二个示例:What is the most straightforward way to pad empty dates in sql results (on either mysql or perl end)?