mysql left join 耗时_MySQL Left Join(左连接) 耗时严重的问题

现象:列表页因超时查不出来东西,使用postman模拟请花费40多秒,将sql语句单独提出来后查询速度非常慢,40多秒

先上结论:

在两个表关联字段上建立索引解决此问题,下面的内容比这句话爽多了,请继续看

表结构如下:

users(用户)表:id,name

integal_record(分数记录)表:id,user_id,integal_id

其中,integal_record表的user_id关联着users表的id,业务目的是查询每个员工阅读次数、评论次数和积分总和,查询语句如下:

(里面写死的值是我从mybatis里扣出来的)

integral_id=1代表着阅读,integral_id=2代表着评论

SELECT u.`name`

, IF(SUM(ir.integral_id = 1) > 0, SUM(ir.integral_id = 1), 0) AS 'read'

, IF(SUM(ir.integral_id = 2) > 0, SUM(ir.integral_id = 2), 0) AS 'comment'

, IF(SUM(ir.integral_id = 1) > 0, SUM(ir.integral_id = 1), 0) + IF(SUM(ir.integral_id = 2) > 0, SUM(ir.integral_id = 2), 0) AS count

FROM users u

LEFT JOIN integral_record ir ON ir.user_id = u.id

WHERE u.role_code = 1

AND u.actived = 1

你可能感兴趣的:(mysql,left,join,耗时)