位置: 编程技术 - 正文
推荐整理分享Mysql性能优化案例 - 覆盖索引分享(mysql的性能优化方案有哪些),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:mysql性能优化策略,mysql性能优化和高可用架构实践 pdf,mysql5.7性能优化,mysql sql性能优化,mysql语句性能优化,mysql性能优化方案,mysql8性能优化,mysql高性能优化,内容如对您有帮助,希望把文章链接给更多的朋友!
场景
产品中有一张图片表,数据量将近万条,有一条相关的查询语句,由于执行频次较高,想针对此语句进行优化
表结构很简单,主要字段:
一个用户会有多条图片记录
现在有一个根据user_id建立的索引:uid
查询语句也很简单:取得某用户的图片集合
优化前
执行查询语句(为了查看真实执行时间,强制不使用缓存)
执行了次,平均耗时在ms左右
使用explain进行分析
使用了user_id的索引,并且是const常数查找,表示性能已经很好了
优化后
因为这个语句太简单,sql本身没有什么优化空间,就考虑了索引
修改索引结构,建立一个(user_id,picname,smallimg)的联合索引:uid_pic
重新执行次,平均耗时降到了ms左右
使用explain进行分析
看到使用的索引变成了刚刚建立的联合索引,并且Extra部分显示使用了'Using Index'
总结
'Using Index'的意思是“覆盖索引”,它是使上面sql性能提升的关键
一个包含查询所需字段的索引称为“覆盖索引”
MySQL只需要通过索引就可以返回查询所需要的数据,而不必在查到索引之后进行回表操作,减少IO,提高了效率
例如上面的sql,查询条件是user_id,可以使用联合索引,要查询的字段是picname smallimg,这两个字段也在联合索引中,这就实现了“覆盖索引”,可以根据这个联合索引一次性完成查询工作,所以提升了性能
简单解决Windows中MySQL的中文乱码与服务启动问题 中文乱码问题当我第一次接触mysql,首先让我难受的是mysql的乱码问题,百度上也有许多有关的解决方案,不过作为亲身受害者,我想很有必要贴出我的
Ubuntu上安装MySQL+问题处理+安全优化 0.说明当然,MySQL的安装方法多种多样,在Ubuntu上,你可以采用apt-get的方式安装,这样的好处是:快速方便。基本上,它会帮你解决所有的函数库依赖问
MySQL中复制数据表中的数据到新表中的操作教程 MySQL是不支持SELECT…INTO语法的,使用INSERTINTO…SELECT替代相同用法,下面我们我们这里简答分一下新表存在和不存在两种情况,具体使用不同的语句。1.新
标签: mysql的性能优化方案有哪些
本文链接地址:https://www.jiuchutong.com/biancheng/319760.html 转载请保留说明!友情链接: 武汉网站建设