美文网首页
索引优化实战

索引优化实战

作者: sizuoyi00 | 来源:发表于2019-09-26 00:28 被阅读0次

优化步骤

1.创建索引
创建索引要注意并不是所有的where条件都要加上索引才会快,过多索引反而会降低查询速度。一般要在最常用的查询条件,order by,group by上加索引。使用一个索引来满足ORDER BY子句,WHERE 条件和 ORDER BY使用相同的索引,并且ORDER BY的顺序和索引顺序相同,并且ORDER BY的字段都是升序或者都是降序。

2.查看级别type代表当前表的级别

possible_keys代表预测使用的索引
key代表实际使用的索引
注意:key在数据量不同的情况会出现变换索引的情况,这时候要充分考虑索引建立的健壮性

3.extra描述
Using temporary; Using filesort
出现上边这两个条件说明该语句必须要优化了,Using temporary 如果有ORDER BY子句和一个不同的GROUP BY子句,或者如果ORDER BY或GROUP BY中的字段都来自其他的表而非连接顺序中的第一个表的话,就会创建一个临时表了。
Using filesort 由于出现了临时表,此时使用order by就相当于一个全表排序。所以sql巨慢。

4.思路
mysql在非直接关联的基础上进行排序会很慢,需要进行优化
1.将主要表作为第一表,将其他表(如果是多表)非直接关联转变成直接关联(合多为一)作为新表
2.多表关联+排序(一大一小两表关联查询情况)
(1)将条件(where,goup by,order by,limit)都转移到主表上,将主表数据查好后,
(2)作为一张数据量很少的新表 再与其他表进行表关联查询
步骤(1)中则使用索引保证索引不失效,步骤(2)则是一张limit后数据量关联一个小表,mysql查询性能完全足够支撑

3.百度Using temporary,Using filesort优化
参考:https://blog.csdn.net/shandalue/article/details/51658920
http://hudeyong926.iteye.com/blog/785181
推荐:https://blog.csdn.net/xiao__gui/article/details/8616224
https://my.oschina.net/longniao/blog/110384

5.实例
主表商品表50w数据,附表品牌表几百数据
优化前查询时间最低为10s+,最高几分钟

explain select g.*,c.store_cat_name from es_goods g
left join es_store_cat c on g.shop_cat_id=c.store_cat_id
where g.seller_id=1 and g.disabled=0 and g.market_enable !=2
and g.goods_type= 'normal' order by g.create_time desc limit 15000,10】

优化前

优化后查询时间最低10ms,最高1s

explain select g1.* ,c.store_cat_name from (
select g.* from es_goods g
where g.seller_id=1 and g.disabled=0 and g.market_enable !=2
and g.goods_type='normal' order by g.create_time desc limit 0,10) g1
left join es_store_cat c on g1.shop_cat_id=c.store_cat_id;

优化后

如二次优化可使用覆盖索引等小技巧

相关文章

  • 索引优化实战

    优化步骤 1.创建索引创建索引要注意并不是所有的where条件都要加上索引才会快,过多索引反而会降低查询速度。一般...

  • 63 MySQL实战性能优化-optimizer_trace

    1,mysql索引性能优化最佳实战 2, 使用索引查询如何避免回表查询 3,为什么查询有时候加了索引也会失效? 4...

  • SQL索引优化实战

    索引是帮助MySQL高效获取数据的排好序的数据结构。在学习索引优化之前建议先学习 mysql索引数据结构在分析SQ...

  • mysql索引优化实战

    最近看了一些索引优化方面的资料,大多数内容都是互相抄袭,有的甚至根本讲不到点上。在此记录下我遇到的几个问题。 误区...

  • Java程序员必备收藏系列:解析 MySQL 索引优化,轻松掌握

    本文主要讨论MySQL索引的部分知识。将会从MySQL索引基础、索引优化实战和数据库索引背后的数据结构三部分相关内...

  • 一篇文章搞定:MySQL 索引优化

    本文主要讨论MySQL索引的部分知识。将会从MySQL索引基础、索引优化实战和数据库索引背后的数据结构三部分相关内...

  • MYSQL实战优化——索引介绍

    初步了解索引 之前我们介绍过,数据页在磁盘文件中的物理存储结构,数据页之间是组成双向链表的,然后数据页内部的数据行...

  • MySQL 优化实战 - 索引篇

    关于SQL优化,这个问题,相信大家过多过少都有过一些了解。最近我也在研究SQL优化方面的东西,分享一些经验。 首先...

  • MySQL实战15 索引优化

    1.索引使用测试 1.1创建test表(测试表) 1.2.创建索引 1.3.分析以下Case索引使用情况 Case...

  • Day 43 索引优化实战

    联合索引 第一个字段>符号不走索引. 覆盖索引in or 数据量。 取决于表记录 a like 'li%' b =...

网友评论

      本文标题:索引优化实战

      本文链接:https://www.haomeiwen.com/subject/uwxructx.html