SQL必知必会-读书笔记(十)
SQL必知必会-读书笔记(十)
UNION
性能问题
多数DBMS内部会使用查询优化程序,理论上讲,相同含义的UNION
和多条WHERE
子句在性能上应该没有实际的差别,但实践上,查询程序并不能达到理想状态,实践中,可以通过测试两种方法工作效果更好。
UNION规则
- 每个子查询都需要
UNION
连接 - 每个子查询必须都有相同数量的列、表达式或聚集函数(不过各个列不需要以相同的次序出现)
- 列数据类型必须兼容,但不必完全相同,满足隐式转换条件即可
如果遇到不同列名时会发上什么?
MySQL会采用第一个结果集的列名,因此,如果想要排序,也只能使用第一个字查询的别名进行排序,否则会报错
UNION 和 UNION ALL
UNION总是完成与多个WHERE条件相同的工作,为此,
UNION
的查询结果是自动去重的如果希望所有字查询结果都出现,可以使用
UNION ALL
关于排序
UNION
或者 UNION ALL
只能进行一次排序,对整个结果集进行排序,不允许对多个字查询进行 ORDER BY
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CautionX!