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

Mysql实例Mysql性能优化案例 - 覆盖索引分享,第1张

概述介绍《Mysql实例Mysql性能优化案例 - 覆盖索引分享》开发教程,希望对您有用。

《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全面培养人才。

总结

以上是内存溢出为你收集整理的Mysql实例Mysql性能优化案例 - 覆盖索引分享全部内容,希望文章能够帮你解决Mysql实例Mysql性能优化案例 - 覆盖索引分享所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1155637.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存