【问题标题】:The GROUP BY clause in a query in MySQL crashes my connection only in some casesMySQL 查询中的 GROUP BY 子句仅在某些情况下使我的连接崩溃
【发布时间】:2018-02-17 06:41:49
【问题描述】:

我有 2 个表,其中一个包含 BLOB。

psh table
................................
ID
playerID
stateID
sceneID


ps table
..................................
ID
playerID
playerState

我需要得到的是按sceneID 分组的ps 表中的ID 计数(来自psh 表)。 所以我加入了 2 张桌子和分组。 问题是在这个特定的查询中,group by 子句使数据库崩溃,我得到错误 2013: lost connection during query.

如果我尝试使用 group by 的其他查询,它会正常工作。

这是我的问题,请帮忙:

select count(ps.ID) from innodb.player_spin as ps
JOIN innodb.player_state_history as psh  ON
psh.playerId = ps.playerId
WHERE psh.sceneId IN (9, 19, 29, 30)
group by psh.sceneId;

【问题讨论】:

  • 该查询对我来说似乎有效。两张桌子有多大?
  • 编辑您的问题并提供示例数据。
  • 一个表是 90k 行(包括 BLOBS),另一个是超小(30 行)。
  • 哪些列是 BLOBS?它们是否包含在您的查询中?
  • 我的查询对 blob 不感兴趣,我不需要 blob 列(这就是为什么我没有提到它,它是表 1 的一部分)

标签: mysql sql group-by


【解决方案1】:

GROUP BY 来自表 psh。它应该是驱动表并与非分组表连接:

select count(ps.ID) 
FROM player_state_history as psh
JOIN player_spin as ps ON
  psh.playerId = ps.playerId
WHERE psh.sceneId IN (9, 19, 29, 30)
GROUP BY psh.sceneId

如果在 psh.sceneId 上正确索引,这应该会加快速度

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 2017-01-10
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多