SQL语句优化,效率提高

peng2739956 peng2739956 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

SELECT DrawID, KindID, ServerID, TableID, UserCount, AndroidCount, Waste, Revenue, UserMedal, StartTime, ConcludeTime, InsertTime, KindName, ServerName,
sum(Score) AS Score, max(BackScore) AS BackScore, BackInsureScore, gameid, accounts, nickname, lastlogonip, LastLogonType, userID
FROM (SELECT A.DrawID, A.KindID, A.ServerID, A.TableID, A.UserCount, A.AndroidCount, A.Waste, A.Revenue, A.UserMedal, A.StartTime, A.ConcludeTime,
A.InsertTime, B.KindName, C.ServerName, sum(D .Score) AS Score, CASE A.KindID WHEN 108 THEN max(d .BackScore - Score)
ELSE d .BackScore END AS BackScore, D .BackInsureScore, E.gameid, E.accounts, E.nickname, E.lastlogonip, E.LastLogonType, E.userID
FROM RecordDrawInfo AS A LEFT JOIN
GameKindItem AS B ON A.KindID = B.KindID LEFT JOIN
GameRoomInfo AS C ON A.ServerID = C.ServerID JOIN
RecordDrawScore AS D ON A.DrawID = D .DrawID LEFT JOIN
AccountsInfo AS E ON D .UserID = E.userID
GROUP BY A.DrawID, A.KindID, A.ServerID, A.TableID, A.UserCount, A.AndroidCount, A.Waste, A.Revenue, A.UserMedal, A.StartTime, A.ConcludeTime,
A.InsertTime, B.KindName, C.ServerName, D .Score, D .BackInsureScore, E.gameid, d .backinsurescore, e.accounts, E.nickname, E.lastlogonip,
E.LastLogonType, E.userID, d .BackScore) AS tab
GROUP BY DrawID, KindID, ServerID, TableID, UserCount, AndroidCount, Waste, Revenue, UserMedal, StartTime, ConcludeTime, InsertTime, KindName, ServerName,
BackInsureScore, gameid, accounts, nickname, lastlogonip, LastLogonType, userID
HAVING sum(Score) != 0


这里其中,RecordDrawInfo 28W数据,RecordDrawScore 25W数据量,其他表只有不到3000的数据量。
现在这个SQL 查询需要10多秒, 我加了聚集索引,要15秒。
30W的数据量 不应该会出现这么久的查询。
希望大佬们给个解决方法
...全文
评论 34
收藏 已收藏
分享
返回顶部
peng2739956
疑难问题 22,298 成员 121,727 内容