QingHuaiBuShuai 2022-04-11 15:33 采纳率: 65.7%
浏览 114
已结题

sql语句优化,查询10条数据花费十几秒

问题遇到的现象和发生背景

这个sql查询速度很慢,接近10s

问题相关代码,请勿粘贴截图
EXPLAIN SELECT
    y.city_name,
    y.employee_number,
    y.last_name
FROM
    sddp.report_month y
    INNER JOIN sddp.report l ON y.`year_month` = "202101" 
    AND l.`year` = "2021" 
    AND y.job_zhuanye = l.job_zhuanye 
    AND y.job_zhize = l.job_zhize 
    AND l.job_name = '公众线' 
    AND y.person_type_name = '正式' 
    AND y.city_id IN (
    SELECT
        o2.org
    FROM
        dhr.g_org o1
        INNER JOIN dhr.g_org o2 ON o2.leftnode >= o1.leftnode 
        AND o2.rightnode <= o1.rightnode 
    WHERE
        o1.org_id IN ( 2222 ) 
    ) 
    AND NOT EXISTS ( SELECT 1 FROM sddp.report_not d WHERE d.`year` = "2021" AND d.employee_number = y.employee_number ) UNION ALL
SELECT
    y.city_name,
    y.employee_number,
    y.last_name
FROM
    sddp.report_month y
    INNER JOIN sddp.report l ON y.`year_month` = "202101" 
    AND l.`year` = "2021" 
    AND y.job_zhuanye = l.job_zhuanye 
    AND l.job_name != '公众线' 
    AND y.person_type_name = '正式' 
    AND y.city_id IN (
    SELECT
        o2.org
    FROM
        dhr.g_org o1
        INNER JOIN dhr.g_org o2 ON o2.leftnode >= o1.leftnode 
        AND o2.rightnode <= o1.rightnode 
    WHERE
        o1.org_id IN ( 2222) 
    ) 
    AND NOT EXISTS ( SELECT 1 FROM sddp.report_not d WHERE d.`year` = "2021" AND d.employee_number = y.employee_number ) 
    LIMIT 0,10 
运行结果及报错内容

explain 结果

img


查看索引

img

  • 写回答

3条回答 默认 最新

  • leaf_cq 2022-04-11 17:39
    关注

    1、除了楼上指出的不同外,UNION ALL 后一个 的 y.city_id IN ( SELECT …… dhr.g_orgn o1 ,这时的表名是 g_orgn 而不是 g_org,多一个n,考虑可能是输入错误
    如果按输入错误算,如楼上所述,那整个UNION ALL的表达:前一个是带 AND y.job_zhize = l.job_zhize,而后一个不带,明显后一个查询的结果集包含前一个查询的结果集,UNION起来的意思是前一个查询的结果在结果集中会出现两份,不知道业务需求上是不是要这样输出……

    2、如果 dhr.g_org 表的 org 字段上建立有索引的话,可以使用 EXISTS 代替 IN,可以利用该索引

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月20日
  • 已采纳回答 4月12日
  • 修改了问题 4月12日
  • 创建了问题 4月11日

悬赏问题

  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签)
  • ¥50 sft下载大文阻塞卡死
  • ¥15 机器人轨迹规划相关问题
  • ¥15 word样式右侧翻页键消失
  • ¥15 springboot+vue 集成keycloak sso到阿里云
  • ¥15 win7系统进入桌面过一秒后突然黑屏
  • ¥30 backtrader对于期货交易的现金和资产计算的问题