《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性能优化案例 - 覆盖索引分享所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)