使用Union或运行查询两次

时间:2014-07-02 09:37:59

标签: php mysql union

我必须运行一个查询,从两个数据库中检索记录。两个数据库的查询相同,我使用UNION关系只进行一次查询。

以下示例将描述我实际想要做的事情

SELECT col1 FROM db1.table1 UNION SELECT col1 FROM db2.table1 ;

我正在使用php来执行上面的查询所以我需要知道哪个更好的性能运行上面的查询一次或者做两个查询并通过php合并结果

SELECT col1 FROM db1.table1
SELECT col1 FROM db2.table1

请注意我使用的是复杂的mysql查询,它使用正则表达式,有时我会使用子查询。

由于

1 个答案:

答案 0 :(得分:1)

唯一可以肯定的方法是对它进行基准测试,我没有。以下是我对差异的最佳猜测,假设:

  • 在这两种情况下,PHP都有一些后处理(例如将结果打印到浏览器),
  • 您将始终同时运行两个查询(两者都在查询缓存中或无查询)。
  • 如果单独运行它们,则在PHP中实现重复的行删除。

如果没有重复的行:

由于运行2个查询而不是1个查询的开销,联合应该以更长的时间(例如30ms)更快。

如果有重复的行:

联盟将为您节省一些流量和PHP处理,并且可能会明显加快(如果有很多重复)。