管理部门网站建设说明,手机商城系统,万城建设网站,网易企业邮箱怎么修改绑定手机如果你不知道什么是覆盖索引#xff0c;那么SQL性能优化便无从谈起#xff01;
什么是覆盖索引?如何利用索引进行SQL语句优化#xff1f;
表结构 150多万的数据#xff0c;这么一个简单的语句#xff1a; 慢查询日志里居然很多用了1秒的#xff0c;Explain的结果是那么SQL性能优化便无从谈起
什么是覆盖索引?如何利用索引进行SQL语句优化
表结构 150多万的数据这么一个简单的语句 慢查询日志里居然很多用了1秒的Explain的结果是 从Explain的结果可以看出查询已经使用了索引但为什么还这么慢
分析首先该语句ORDER BY 使用了Using filesort文件排序查询效率低其次查询字段不在索引上没有使用覆盖索引需要通过索引回表查询也有数据分布的原因。
知道了原因那么问题就好解决了。
解决方案由于只需查询uid字段添加一个联合索引便可以避免回表和文件排序利用覆盖索引提升查询速度同时利用索引完成排序。 覆盖索引SQL只需要通过索引就可以返回查询所需要的数据而不必通过二级索引查到主键之后再去查询数据。
我们再Explain看一次 Extra信息已经有Using Index表示已经使用了覆盖索引。经过索引优化之后线上的查询基本不超过0.001秒。