You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL含GROUP BY的JOIN查询失败:Error Code 2013连接中断排查

解决MySQL查询时连接中断的问题

问题根源

你的查询先对两张全表做关联,再执行分组计算,会生成大量冗余的中间数据(若每张表按县有多条记录,关联后数据量会呈指数级增长),加上没有索引导致全表扫描,服务器负载过高,最终超出MySQL连接超时阈值,触发Error Code:2013。

优化方案

1. 先聚合单表再关联(核心优化)

先分别对两张表按县聚合出所需的最大值,再进行关联,避免冗余数据的生成:

SELECT 
    d.County_Name AS County,
    c.Cases,
    d.Deaths,
    d.Population2019
FROM (
    SELECT 
        County_Name,
        MAX(Total_Deaths) AS Deaths,
        MAX(Population2019) AS Population2019
    FROM pennsylvaniadeathsbycounty
    GROUP BY County_Name
) d
JOIN (
    SELECT 
        Jurisdiction,
        MAX(Cumulative_cases) AS Cases
    FROM pennsylvaniacasesbycounty
    GROUP BY Jurisdiction
) c ON d.County_Name = c.Jurisdiction;

2. 添加索引提升查询效率

给两张表的关联列和分组列创建索引,消除全表扫描:

-- 为死亡表的County_Name列创建索引
CREATE INDEX idx_deaths_county ON pennsylvaniadeathsbycounty(County_Name);
-- 为病例表的Jurisdiction列创建索引
CREATE INDEX idx_cases_jurisdiction ON pennsylvaniacasesbycounty(Jurisdiction);

3. 临时调整连接超时参数(应急方案)

若无法修改查询或添加索引,可临时调大MySQL的连接超时时间(需管理员权限):

SET GLOBAL wait_timeout = 3600;
SET GLOBAL interactive_timeout = 3600;

注:此方案仅为临时缓解,长期优化仍需依赖前两种方法。

内容的提问来源于stack exchange,提问作者Bryce Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 06:35:24