千万级 Mysql 优化

相信对于mysql 优化 索引使用大家都很熟悉了吧,但是有些问题还要自己发现。

问题:数据量达到千万级别后查询很慢,尤其是分页查询,第一页还好,继续下一页会发现越来越慢

分析:分页很慢定位到两个查询,一个是查询数据(...limit 0,10)耗时1s~2s,另一个查询总条数(select count() ...)耗时 6s~7s

问题很明显了,就是查询总条数 浪费了大量时间,语句截图(防止代码自动改变,对读者产生影响)如下:

目前表有2个索引,一个主键,一个是时间字段,因为我有时候需要按时间排序,查指定时间段的数据。

通过 explain 定位到 查询的时候没有走主键的索引,一顿百度之后有大神建议 where 后的字段全部加索引,也就是说加一个联合索引包含where 后的字段,我试了下还是需要5s  ,然后我发现 联合索引是有优先级的,这个非常重要 ,我调整了优先级,结果查询还不到0.2s ,好了问题解决!

另外分页查询,第一页还好,继续下一页会发现越来越慢 也给大家提供下解决方案:

通过分页查询时,只需查询出索引字段(速度会很快),通过索引去查询数据也比较快,ok 所有问题全部解决!!!

如果本文解决了您的问题,请小编喝杯咖啡吧~~~,如果仍然没有解决可以企鹅小编:135企鹅8850企鹅447

    

发布了69 篇原创文章 · 获赞 17 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/qq_27404929/article/details/86623444