联合查询和C ++

时间:2010-08-16 13:45:39

标签: c++ mysql union

我使用MySQL数据库和C ++编程语言。

在我的数据库中有20个表。我从这些表中生成不同的消息。 所有表都包含dateTime列,我想对生成的消息进行排序。

我是通过使用union来做到的。但查询是如此之久。 你认为它有另一种方式或我的方式是正确的。

吃了很多。

2 个答案:

答案 0 :(得分:1)

听起来你正试图从多个不相关的表中获取一个排序的项目列表。

在这种情况下,我会单独从每个表中获取消息,然后在C ++中以编程方式将它们按您所需的顺序排序。这可能会使您的查询复杂得多,而不是让它们进行联合并在多个表中进行排序。

编辑: 不幸的是,我不认为对于是在SQL中执行此操作还是在C ++中以编程方式执行此操作都没有绝对的客观答案。我建议采用务实的方法:以最简单,最清晰的方式编码(通常两者相同)并查看其执行情况。如果表现可以接受,那么你就完成了。如果它很慢,那就对它进行分析。如果您发现您的方法是慢点,那么您可以尝试其他方法,看看它是如何执行的。

答案 1 :(得分:0)

我不知道MySQL是否支持此功能,但您可以将所有联合作为子选择并从外部选择中进行排序,如下所示:

select
  f1, f2
from (
  select
    f1, f2
  from
    T1
  union
  select
    f5, f6
  from
    T2
)
order by
  2