【发布时间】:2015-07-20 11:23:48
【问题描述】:
以下两条 SQL 语句功能相同:
SELECT DISTINCT a,b,c FROM table1
UNION DISTINCT
SELECT DISTINCT a,b,c FROM table2
和
SELECT a,b,c FROM table1
UNION DISTINCT
SELECT a,b,c FROM table2
...因为“DISTINCT”作为一个整体应用于联合,因此在单个 SELECT 中是多余的。
(注意:UNION DISTINCT 本身与 UNION 相同,但为了清楚起见,我包含了 DISTINCT 关键字)
我的问题是,两者在 MySQL 中是否存在性能差异或执行计划差异?或者SELECT DISTINCTs 是否被优化器变成了常规的SELECT?
【问题讨论】:
-
(我正要指出这些查询在功能上并不相同。但我错了!它们是!YLSNED)
-
我没有阅读 EXPLAIN 输出的经验。而且,我想知道一般情况下的答案,而不仅仅是一些特定的表格,这是 EXPLAIN 会告诉我的。
-
我刚刚在两个定义为 (a int, b int, cint) 的临时表上尝试了
EXPLAIN,唯一的区别是使用SELECT DISTINCTs,输出有“使用临时”在“额外”栏中。所以我想在这种特殊情况下的答案是它排序了三次(每个SELECT一次,UNION一次?我想?