我想将任意元组添加到包含 180 万行的 SELECT
结果中。我决定像这样使用 UNION
运算符:
SELECT
id as id
FROM
user
UNION
SELECT
-1 as id
哪个返回:
+---+
| id|
+---+
| -1|
+---+
| 01|
+---+
| 02|
+---+
|...|
+---+
然而,使用和不使用 UNION
运算符的查询之间的性能损失是巨大的。我尝试使用这样的 UNION ALL
语句:
SELECT
id as id
FROM
user
UNION ALL
SELECT
-1 as id
这 - 我认为 - 可能是性能损失背后的原因,但性能损害仍然存在。
我错过了什么吗?我只是想向 SELECT
结果添加一个额外的任意元组。
最佳答案
使用 UNION
(或 UNION ALL
)似乎会导致创建一个临时表。看这个bug供引用。
创建一个包含 180 万行的临时表可能是导致速度下降的原因。
好消息是,5.7.3 似乎在某些情况下改变了这种行为。请参阅链接的错误报告中的最后一篇文章。
关于mysql - 使用 UNION ALL 添加任意元组时的性能损失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30775986/