是阿星啊 2023-02-06 15:12 采纳率: 40%
浏览 56
已结题

mysql left join 优化

mySql LEFT JOIN 优化 求帮我指出问题

每个LEFT JOIN 单个查询很快,但是整体运行查询6.7s(主要是最后一个LEFT JOIN 加上就会很慢)
下面是执行计划

img


SELECT a.user_id,a.user_name,a.name ,REPLACE(GROUP_CONCAT(DISTINCT b.class_name),',','、') AS v1 
,REPLACE(GROUP_CONCAT(DISTINCT c.class_name),',','、') AS v2 
,REPLACE(GROUP_CONCAT(DISTINCT d.class_subject_name),',','、') AS v3
 FROM yf_user a
 LEFT JOIN (
 SELECT a.school_id,a.teacher_id1,a.class_id,a.class_name
 FROM yf_class a
 INNER JOIN yf_grade b
 ON a.school_id=b.school_id AND a.grade_id=b.grade_id
 WHERE a.school_id=1 AND b.grade_code<>'199' AND a.class_type<>'199' AND b.status=1 )b
 ON a.school_id=b.school_id AND a.user_id=b.teacher_id1
 LEFT JOIN (
 SELECT a.school_id,a.teacher_id2,a.class_id,a.class_name
 FROM yf_class a
 INNER JOIN yf_grade b
 ON a.school_id=b.school_id AND a.grade_id=b.grade_id
 WHERE a.school_id=1 AND b.grade_code<>'199' AND a.class_type<>'199' AND b.status=1 )c
 ON a.school_id=c.school_id AND a.user_id=c.teacher_id2
 LEFT JOIN (
 SELECT a.school_id,a.user_id,CONCAT(c.class_name,d.subject_name) AS class_subject_name
 FROM yf_tea a
 INNER JOIN yf_grade b
 ON a.school_id=b.school_id AND a.grade_id=b.grade_id
 INNER JOIN yf_class c
 ON a.school_id=c.school_id AND a.class_id=c.class_id
 INNER JOIN yf_subject d
 ON a.school_id=d.school_id AND a.subject_id=d.subject_id
 WHERE a.school_id=1 AND b.grade_code<>'199' AND c.class_type<>'199' AND b.status=1 ) d
 ON a.school_id=d.school_id AND a.user_id=d.user_id
 WHERE a.school_id=1 AND a.user_type=1 
 GROUP BY a.user_id HAVING (v1 IS NOT NULL OR v2 IS NOT NULL OR v3 IS NOT NULL) 
 ORDER BY a.sort ASC,a.user_name ASC,a.name ASC;
  • 写回答

5条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-02-06 18:13
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 2月21日
  • 已采纳回答 2月13日
  • 创建了问题 2月6日

悬赏问题

  • ¥15 fx2n系列plc的自控成型机模拟
  • ¥15 时间序列LSTM模型归回预测代码问题
  • ¥50 使用CUDA如何高效的做并行化处理,是否可以多个分段同时进行匹配计算处理?目前数据传输速度有些慢,如何提高速度,使用gdrcopy是否可行?请给出具体意见。
  • ¥15 基于STM32,电机驱动模块为L298N,四路运放电磁传感器,三轮智能小车电磁组电磁循迹(两个电机,一个万向轮),如何通过环岛的原理及完整代码
  • ¥20 机器学习或深度学习问题?困扰了我一个世纪,晚来天欲雪,能饮一杯无?
  • ¥15 c语言数据结构高铁订票系统
  • ¥15 关于wkernell.PDB加载的问题,如何解决?(语言-c#|开发工具-vscode)
  • ¥100 某宝多次访问被拒绝,求解
  • ¥15 (标签-STM32|关键词-智能小车)
  • ¥20 关于#stm32#的问题,请各位专家解答!