(全网讲的最好)面试被问到mysql调优如何回答

面试大纲
深度:JVM、MySal 调优、并发编程、Spring 源码、
Redis、MQ 技术核心竞争力
广度:微服务
基础:设计模式、网络、数据结构与算法
Mysql优化:
sql优化一般分为四个层面:
1.业务层面的优化 2.代码层面的优化 3.sql层面的优化 4.硬件层面的优化(硬件是运维负责)
业务层面的优化
表里十多亿的数据,分库分表、集群,索引已经优化到最好了
需求:用户vip 1级可以看xx的数据,5级可以看ss的数据,查数据,这条sql首先已经用到分页,分页下面用到count,在此基础上如何优化
背景:可以直接用es,但是es有很多程序员不会(现在的情况是,业务已经外包开发完了,做接口压测时,发现有一条sql查询几十秒)
在这种情况下如何优化?
查询时默认设置查询条件,比如可以和产品经理他们沟通,5级的用户默认就带有某些条件
代码层面的优化
把count的数量单独放在一张表上维护,如果这样表的数据达到10几亿了,count函数也是相当慢,所有可以建立一张表维护总数量,这张表主要存储数据库名称,主键,count数,每次添加1条数据就异步的把这张表的count数+1
sql层面的优化
可以创建联合索引,减少回表,让所有数据直接在这一个索引树下查询出来