qq_36178165
言之有李LAX
2021-03-02 03:10
采纳率: 50%
浏览 218
已采纳

mysql 多表联查 一对多数据量大的情况下效率低下

首先  索引命中,一条线路对应经纬度接近四五百条数据,这样查询出来效率特别低下

把b表放到最后的原因是,测试其他的几张表,速度都比较快,就只有这一个表加上后速度60秒

 

 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • technologist_04
    已采纳

    多数情况,可以不用数据库的连表查询,用代码进行单表查询后再聚合,对数据查询结果实时性要求不高的话,可以根据查询效率情况加主动缓存或者被动缓存。另外经纬度可以用mysql的geometry类型

    点赞 评论
  • huanhuilong
    幻灰龙 2021-03-02 09:20

    可以做几个简单的优化检查,再看看效果。

    1. 表的设计上,尽量消除 left join, left join 比 inner join慢
    2. 检查下你的表的索引是否做了,b 表的 id 和被查询的字段可以做成一个联合索引,规避回表查询。
    3. 只查询必要的字段,不必 a.* 全查出来。
    4. 是否有其他过滤条件,功能上需要全查出来?
    点赞 评论

相关推荐