加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

一次非常有趣的SQL优化经历

发布时间:2019-04-05 17:09:28 所属栏目:MySql教程 来源:风过无痕
导读:场景 我用的数据库是mysql5.6,下面简单的介绍下场景 课程表: createtableCourse( c_idintPRIMARYKEY, namevarchar(10) ) 数据100条 学生表: createtableStudent( idintPRIMARYKEY, namevarchar(10) ) 数据70000条 学生成绩表SC: CREATEtableSC( sc_idin

那么再来执行下sql:

  1. SELECT s.* from   
  2. Student s  
  3. INNER JOIN SC sc  
  4. on ssc.s_id = s.s_id  
  5. where sc.c_id=0 and sc.score=100 

执行时间0.001s

执行计划:

这里是mysql进行了查询语句优化,先执行了where过滤,再执行连接操作,且都用到了索引。

调整内容为SC表的数据增长到300W,学生分数更为离散。

先回顾下:

  1. show index from SC 

执行sql

  1. SELECT s.* from   
  2. Student s  
  3. INNER JOIN SC sc  
  4. on ssc.s_id = s.s_id  
  5. where sc.c_id=81 and sc.score=84 

执行时间:0.061s

这个时间稍微慢了点

执行计划:

这里用到了intersect并集操作,即两个索引同时检索的结果再求并集,再看字段score和c_id的区分度,单从一个字段看,区分度都不是很大,从SC表检索,c_id=81检索的结果是70001,score=84的结果是39425。

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!