关于MySQL里的UNION和OR

select * from table where column1 < 1000 union select * from table where column2 > 1000
select * from table where column1 < 1000 or column2 > 1000

这俩有什么区别?
(这会儿没在电脑跟前,按感觉两个的结果应该是一样的)

阅读 5.8k
2 个回答

UNION 会让 mysql 查询 table 两次,并且将结果集再进行一次合并。如果结果集比较大,mysql 还会用到外存储的临时表来将两个结果集暂存、合并、输出。

OR 就永远不会有这个问题,最多就是做一次查询,所以它一定会优于 UNION

P.S. 真爱生命,远离 UNION

新手上路,请多包涵

第二种查询方式是不走索引的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题