专栏首页性能与架构Mysql性能优化案例 - 覆盖索引

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

场景

产品中有一张图片表,数据量将近100万条,有一条相关的查询语句,由于执行频次较高,想针对此语句进行优化 表结构很简单,主要字段: user_id 用户ID picname 图片名称 smallimg 小图名称 一个用户会有多条图片记录 现在有一个根据user_id建立的索引:uid 查询语句也很简单:取得某用户的图片集合 select picname, smallimg

from pics where user_id = xxx;

优化前

执行查询语句(为了查看真实执行时间,强制不使用缓存) select SQL_NO_CACHE picname, smallimg

from pics where user_id=17853; 执行了10次,平均耗时在40ms左右 使用explain进行分析 explain select SQL_NO_CACHE picname, smallimg

from pics where user_id=17853

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

优化后

因为这个语句太简单,sql本身没有什么优化空间,就考虑了索引 修改索引结构,建立一个(user_id,picname,smallimg)的联合索引:uid_pic 重新执行10次,平均耗时降到了30ms左右 使用explain进行分析

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

总结

'Using Index'的意思是“覆盖索引”,它是使上面sql性能提升的关键 一个包含查询所需字段的索引称为“覆盖索引” MySQL只需要通过索引就可以返回查询所需要的数据,而不必在查到索引之后进行回表操作,减少IO,提高了效率 例如上面的sql,查询条件是user_id,可以使用联合索引,要查询的字段是picname smallimg,这两个字段也在联合索引中,这就实现了“覆盖索引”,可以根据这个联合索引一次性完成查询工作,所以提升了性能

本文分享自微信公众号 - 性能与架构(yogoup),作者:杜亦舒

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-02-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 建立索引后的代价到底有多大?

    前几天写的文章“MySQL 性能优化案例:覆盖索引”,介绍了使用覆盖索引优化查询的方式,受到了一个网友的批评 批评的内容为: “直接从索引放回数据很快是个常...

    dys
  • 为什么SQL优化中建议用UNION来代替OR

    在SQL优化相关资料中,通常可以看到一个建议:用UNION来代替OR 举例 采用 OR 语句: SELECT * FROM a, b WHERE a.p...

    dys
  • mysql 索引无效的情况

    下面几种情况下,索引是不会被使用的 (1)组合索引,查询时的条件列不是组合索引中的第一个列 例如 组合索引 (a,b),查询中使用了b作为查询条件,这时是不会用...

    dys
  • 聚簇索引和二级索引

    java404
  • MySQL 之 索引原理与慢查询优化

    浏览目录 一 索引介绍 二 索引方法 三 索引类型 四 聚合索引和辅助索引  五 测试索引 六 正确使用索引 七 组合索引 八 注意事项 九 查询计划 十 慢日...

    人生不如戏
  • MYSQL之索引原理与慢查询优化

    一、索引 1、介绍   一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的也是最容易出现问题的,...

    新人小试
  • mysql的索引

    在大部分情况下,程序的瓶颈都在于数据库,所以为了减少数据库的压力,我们会通过缓存(减少数据库查询),分布式数据库,读写分离等方式去减少数据库本身的curd压力.

    仙士可
  • 什么是搜索引擎索引和收录?有什么区别?

    昨天和一个做网站优化的朋友(SEO 新手)交流,说到了搜索引擎的索引、收录,子凡相信这也是很多入门 SEO 新手都比较容易混淆的两个点,所以我们就一起来看看搜索...

    周俊辉
  • mysql索引优化详解

    爱撒谎的男孩
  • 什么是搜索引擎索引和收录?有什么区别?

    昨天和一个做网站优化的朋友(SEO 新手)交流,说到了搜索引擎的索引、收录,子凡相信这也是很多入门 SEO 新手都比较容易混淆的两个点,所以我们就一起来看看搜索...

    周俊辉

扫码关注云+社区

领取腾讯云代金券