我使用MySQL数据库和C ++编程语言。
在我的数据库中有20个表。我从这些表中生成不同的消息。 所有表都包含dateTime列,我想对生成的消息进行排序。
我是通过使用union来做到的。但查询是如此之久。 你认为它有另一种方式或我的方式是正确的。
吃了很多。
答案 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