mysql 多表连接查询优化 ,并发量大时速度超慢

chenxitest 2013-10-11 05:53:14
1.先丢查询语句
-- 业务:查询某个学校[学校id为120082]的某一节课[大学英语]有多少学生选

SELECT COUNT(DISTINCT _choosemate.studentId)
FROM _choosemate LEFT JOIN _course ON _course.id = _choosemate.courseId
  LEFT JOIN _student ON _choosemate.studentId = _student.id
WHERE _course.schoolId = 120082 AND _course.`name` = '大学英语'
  AND _course.beginYear = 2013 AND term = 1 AND LENGTH(_student.nickName) > 0


2.问题
单独执行时速度挺快的,但当并发量大时速度变得很慢,
被这个问题困扰很久了,急求大虾们指教!!!







...全文
951 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuxinran819 2013-10-14
  • 打赏
  • 举报
回复
顶多是速度相同 更慢应该是不会的
liuxinran819 2013-10-12
  • 打赏
  • 举报
回复
楼上各位给你的索引是优化的利器,除此之外有下面两个可以考虑优化的地方: 1.使用LEFT JOIN没什么道理 换成INNER JOIN会优化一点 2.如果不使用AND LENGTH(_student.nickName) > 0这个条件 就不需要连接_student表了 会优化很多 但是这要从业务逻辑上考虑
chenxitest 2013-10-12
  • 打赏
  • 举报
回复
引用 4 楼 ACMAIN_CHM 的回复:
create index xx1 on _course(id,schoolId,`name`,beginYear) create index xx2 on _student(id,term,nickName) create index xx3 on _choosemate(courseId)
嗯 ,这样加索引是一点,那请问这个查询语句本身可不可以再进行优化呢....
chenxitest 2013-10-12
  • 打赏
  • 举报
回复
引用 6 楼 liuxinran819 的回复:
楼上各位给你的索引是优化的利器,除此之外有下面两个可以考虑优化的地方: 1.使用LEFT JOIN没什么道理 换成INNER JOIN会优化一点 2.如果不使用AND LENGTH(_student.nickName) > 0这个条件 就不需要连接_student表了 会优化很多 但是这要从业务逻辑上考虑
谢谢先,LEFT JOIN换成INNER JOIN 更慢了...
ACMAIN_CHM 2013-10-11
  • 打赏
  • 举报
回复
create index xx1 on _course(id,schoolId,`name`,beginYear) create index xx2 on _student(id,term,nickName) create index xx3 on _choosemate(courseId)
chenxitest 2013-10-11
  • 打赏
  • 举报
回复
引用 2 楼 rucypli 的回复:
alter table _course add index(schoolId ,name)
_course 表时已经有2两个索引了,再加索引 不好吧
rucypli 2013-10-11
  • 打赏
  • 举报
回复
alter table _course add index(schoolId ,name)
chenxitest 2013-10-11
  • 打赏
  • 举报
回复
有没有人遇到过同样的问题,求分析原因及解决方法

56,678

社区成员

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

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