mysql - mysql使用union时查询速度极慢,有没有其他方法可以避免union,或者提高查询效率
问题描述
我们的项目中有两张桌子,一张用于仓库进货,一张用于出库。但是现在我们需要将它们放在一个查询中,这当然带有'time','warehouse_id'等查询条件,结果也需要排序。解决方案是将这两个表合并,然后排序,查询如下:
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
但问题是这个查询运行速度非常慢,不到 100k 条记录执行需要 1.5s,如果我们不使用 union,通常需要不到 0.05s。有没有其他方法可以提高查询速度?
解决方案
谢谢大家的回答,一张大桌子就可以了,我试试这个。此外,我找到了另一种解决方案,即在查询的每一半中使用 last_record_time 参数进行排序和限制,然后将结果合并并再次进行排序和限制。我更喜欢建一个表。
推荐阅读
- php - PHP 正则表达式模式,KODI 季节海报提取器
- javascript - 在地图功能中反应条件渲染组件
- docker - docker run 后自动删除文件
- ios - iOS 编程:更详细地了解第一响应者
- javascript - 如何在 React.js 而不是 jQuery 或任何其他框架中获得选定的选项?
- java - 如何在springboot mongo-data中使用$in操作符
- javascript - React Modal 总是使用一行中的相同记录
- algorithm - A* 是否从边缘以增量成本顺序(如 Dijkstra 的)弹出节点以获得一致的启发式?
- swift - 如何对 SIMD3 进行类型转换
ARFaceGeometry 顶点坐标 - python - 如何使用 pandas .eval() 来评估多列上的操作。?