我用的数据库是mysql5.6,下面简单的介绍下场景。
文/风过无痕-唐
课程表
数据100条
学生表:
数据70000条
学生成绩表SC
数据70w条
查看目的一次很有意思的 SQL 优化历程
实行时间一次很有意思的 SQL 优化历程
,,发现没用到索引,type全是ALL,那样第一想到的就是打造一个索引,打造索引的字段当然是在where条件的字段。
先给sc表的c_id和score建个索引
第三实行上述查看语句,时间为: 1.054s
快了3w多倍,大大缩短了查看时间,看来索引能很大程度的提升查看效率,建索引非常有必要,有时候都忘记建
索引了,数据量小的的时候压根没感觉,这优化的感觉挺爽。
但1s的时间还是太长了,还能进行优化吗,仔细看实行计划一次很有意思的 SQL 优化历程
在命令窗口实行
,,有type=all
根据我之前的想法,该sql的实行的顺序应该是先实行子查看
耗时一次很有意思的 SQL 优化历程
,,然后再实行
耗时一次很有意思的 SQL 优化历程0.057s
效率有所提升,看看实行计划一次很有意思的 SQL 优化历程
,,优化后的查看语句为一次很有意思的 SQL 优化历程
,,这里是先做的where条件过滤,再做连表,实行计划还不是固定的,那样大家先看下标准的sql实行顺序:
,,正常状况下是先join再进行where过滤,但大家这里的状况,假如先join,将会有70w条数据发送join做操,因此先实行where