【发布时间】:2010-10-26 14:03:36
【问题描述】:
当我优化我的 2 个单个查询以在 0.02 秒内运行,然后 UNION 它们运行结果查询需要超过 1 秒。此外,UNION ALL 比UNION DISTINCT 需要更长的时间。
我假设允许重复会使查询运行得更快而不是更慢。
我真的最好分开运行这两个查询吗?
我更喜欢使用UNION。
作为一个简单的例子,如果我这样做了
SELECT name FROM t1 WHERE field1 = true
需要 0.001 秒
如果我这样做了
SELECT name FROM t1 WHERE field1 = false
需要 0.1 秒。
如果我然后运行
SELECT name FROM t1 WHERE field1 = true
UNION ALL
SELECT name FROM t1 WHERE field1 = false
需要 1 秒以上。
【问题讨论】:
-
不幸的是我不能(工作),虽然我认为这是一个非常直接的查询。也许我需要一些关于 MySQL 如何执行 UNION 的见解。我注意到对连接查询的解释我使用的是文件排序和临时表,而每个单独的查询都不是。
-
不是整个脚本,只是相关查询。
-
举个简单的例子,如果我执行 SELECT name FROM t1 WHERE field1 = true 则需要 0.001,如果我执行 SELECT name FROM t1 WHERE field1 = false 则需要 0.1 秒。如果我然后运行 SELECT name FROM t1 WHERE field1 = true UNION ALL SELECT name FROM t1 WHERE field1 = false 它需要超过 1 秒。它不是特定查询的结果。
-
我不知道为什么这 10 岁。问题有一个赏金。我测试的 MySQL 没有这个问题:sqlfiddle.com/#!9/4668601/2
-
也许我们中的一些人希望立即查询每个 SELECT,然后直接合并排序到客户端。
标签: mysql query-optimization union