说到数据库的查询效率优化问题,首先就能想到以下几种方式:
这里是说基于数据库的优化,还有其它的优化方式;比如,增加缓存,把频繁使用的数据放到redis中,这样可以加快速度;但同样会带来数据的一致性问题。
所以,这里只讨论数据库层面的优化。
1. sql语句优化,索引优化,慢查询
2. 数据表结构优化
3. 读写分离
4. 分库分表
面试或工作过程中,问到数据库提升性能的思路,无法以上几种。
第一, sql优化,最简单直接的就是不要使用select *等语句,一是可能导致索引等失效;二是会导致查询到大量不需要到数据,导致系统响应缓慢。
其次,就是在适当的字段上面建立索引,这样可以大大提升数据库的查询效率;还有就是慢查询。
所谓的慢查询就是sql语句查询时间超过某个点的查询语句,比如超过了两秒钟。
而怎么解决慢查询问题,首先就是可以使用一些第三方的监控系统,监控某个接口响应时间是否异常等;或者通过配置mysql数据库的方式,开启其慢查询的功能;这样超过一定时间限制的sql语句就会被记录下来,这时再根据具体的业务需求,对sql进行优化;比如关联查询拆分成单表查询,然后在业务代码中对数据进行组合处理等。
还有就是使用mysql提供的explain字段,来查看sql语句的执行过程,是否有命中索引等,以此来对sql语句或索引进行优化。
第二,表结构优化。在表结构的设计过程中,根据不同的业务场景,对数据表结构进行设计,没有关系的字