Mysql查询时使用了union导致查询很慢,有没有什么办法可以替代union?

当前项目里面有两个表,出库记录,入库记录,但是在查询的时候需要将出库和入库放在一起做查询、筛选,并且还要按时间排序,还要分页等等。当时第一个想到的解决方法就是用union连起来之后再order by,但是发现效率巨低,10W不到的数据要查1.5s,真很难接收,有没有什么办法可以替代union的呢,或者优化效率

不是分页的吗,分别从两个表查询分页数据,然后再order by,再截取分页数据

我觉得你可以贴一下你的SQL

sql大致的结构如下:

select * from
(select ... from warehouse_in left join ... where ... 
union
select ... from warehouse_out left join ... where ...) as tmp order by 'stock_time' limit X,Y

入库表和出库表如果没有重复数据不需要去重,可以使用UNION ALL,UNION ALL 和 UNION 不同之处在于 UNION ALL 会将每一笔符合条件的资料都列出来,无论资料值有无重复。从效率上说, UNION ALL 的执行效率要比 UNION 效率要高很多,这是因为,使用 UNION 需要进行排重,而 UNION ALL 是不需要排重的,这一点非常重要,因为对于一些单纯地使用分表来提高效率的查询,完全可以使用 UNION ALL 。