第一次发帖提问,较乱,多包涵,现整理重发。 关于一个sql 的优化问题

uu_lt 2012-11-14 09:54:02
对这条sql的性能损耗有很多不清晰的地方,希望各位多多提醒,帮助!谢谢大家


SELECT
k.resource_id,
k.resource_type,
(k.resource_type%2) resOffset,
z.type_index,
c.question_id resourceId,
k.resource_name resoutceName,
l.erStatus erStatus,
COALESCE(j.is_recommend,0) isRecommend,
if (ADDDATE(MAX(j.insert_time),365) > NOW(),1,0) isAdd
FROM t_user_question c
JOIN (
#问题1:性能与该子查询返回记录数成反比(一条记录100%,两条200% T_T````),这太恐怖了
select
c.question_id ,
ABS(d.question_state) erStatus
from t_class_homework a
JOIN t_user_homework b on a.homework_id = b.homework_id
JOIN t_user_question c on a.homework_id = c.homework_id
JOIN t_user_question_detail d on c.user_question_id = d.user_question_id
JOIN t_user_class f on f.class_id = a.class_id and f.user_id = c.user_id
WHERE f.class_id = 1001
and f.user_id = 10001
and b.state in (2,3)
and a.homework_id = 2
and b.user_id= f.user_id
GROUP BY c.question_id
) l on l.question_id = c.question_id
JOIN t_user_homework h on c.homework_id = h.homework_id
JOIN t_user_question_detail d on c.user_question_id = d.user_question_id
JOIN t_user_class f on c.user_id = f.user_id
JOIN t_user g on c.user_id = g.user_id

#问题2:下面一句大概影三分之二的性能,对于这个查询只有8条匹配数据 ,为什么影响如此之大
LEFT JOIN t_question_user_recommen j on j.question_id = c.question_id

JOIN t_question k on k.question_id = l.question_id
JOIN t_subject_question_type z on z.question_type_id = k.question_type_id and z.subject_id = k.subject_id
WHERE f.class_id = 1001
and c.homework_id = 2
and h.state in (2,3)
AND h.user_id = f.user_id
GROUP BY c.question_id




小弟,第一次发帖 提问,有不专业的地方多多包涵
...全文
140 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
uu_lt 2012-11-15
  • 打赏
  • 举报
回复
问题已解决,问题出在 left join 上。 修改left join与其他表的连接方式后 效率大大提高
uu_lt 2012-11-15
  • 打赏
  • 举报
回复
引用 3 楼 rucypli 的回复:
太恐怖了 不敢看
大大啊 这个也不多啊 。 里面的派生表完全可以忽视的
rucypli 2012-11-14
  • 打赏
  • 举报
回复
太恐怖了 不敢看
uu_lt 2012-11-14
  • 打赏
  • 举报
回复
为什么没人呢?求版主大大,求吐槽
uu_lt 2012-11-14
  • 打赏
  • 举报
回复
来人吧

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧