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

Mysql实例Mysql性能优化案例 - 覆盖索引分享

发布时间:2020-12-12 02:57:48 所属栏目:MySql教程 来源:网络整理
导读:《Mysql实例Mysql性能优化案例 - 覆盖索引分享》要点: 本文介绍了Mysql实例Mysql性能优化案例 - 覆盖索引分享,希望对您有用。如果有疑问,可以联系我们。 MYSQL必读 场景 MYSQL必读 产物中有一张图片表,数据量将近100万条,有一条相关的查询语句,由于执行频

《Mysql实例Mysql性能优化案例 - 覆盖索引分享》要点:
本文介绍了Mysql实例Mysql性能优化案例 - 覆盖索引分享,希望对您有用。如果有疑问,可以联系我们。

MYSQL必读场景

MYSQL必读产物中有一张图片表,数据量将近100万条,有一条相关的查询语句,由于执行频次较高,想针对此语句进行优化

MYSQL必读表布局很简单,主要字段:

代码如下:
user_id 用户ID
picname 图片名称
smallimg 小图名称

MYSQL必读一个用户会有多条图片记录

MYSQL必读现在有一个根据user_id建立的索引:uid

MYSQL必读查询语句也很简单:取得某用户的图片集合

代码如下:
select picname,smallimg
from pics where user_id = xxx;

MYSQL必读优化前

MYSQL必读执行查询语句(为了查看真实执行时间,强制不使用缓存)

代码如下:
select SQL_NO_CACHE picname,smallimg
from pics where user_id=17853;

MYSQL必读执行了10次,平均耗时在40ms左右

MYSQL必读使用explain进行阐发

代码如下:
explain select SQL_NO_CACHE picname,smallimg
from pics where user_id=17853

MYSQL必读

MYSQL必读使用了user_id的索引,并且是const常数查找,表现性能已经很好了

MYSQL必读优化后

MYSQL必读因为这个语句太简单,sql自己没有什么优化空间,就考虑了索引

MYSQL必读修改索引布局,建立一个(user_id,picname,smallimg)的联合索引:uid_pic

MYSQL必读重新执行10次,平均耗时降到了30ms左右

MYSQL必读使用explain进行阐发

MYSQL必读

MYSQL必读看到使用的索引酿成了刚刚建立的联合索引,并且Extra部分显示使用了'Using Index'

MYSQL必读总结

MYSQL必读'Using Index'的意思是“笼罩索引”,它是使上面sql性能提升的关键

MYSQL必读一个包括查询所需字段的索引称为“覆盖索引”

MYSQL必读MySQL只必要通过索引就可以返回查询所必要的数据,而不必在查到索引之后进行回表操作,减少IO,提高了效率

MYSQL必读例如上面的sql,查询条件是user_id,可以使用联合索引,要查询的字段是picname smallimg,这两个字段也在联合索引中,这就实现了“笼罩索引”,可以根据这个联合索引一次性完成查询工作,所以提升了性能

编程之家PHP培训学院每天发布《Mysql实例Mysql性能优化案例 - 覆盖索引分享》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。

(编辑:李大同)

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

    推荐文章
      热点阅读