mysql由于他的开源以及存储引擎的优点,已经收到了众多开发人员的喜爱,所以在面试过程中,mysql调优也是面试提问几率非常高的,这篇文章就让我们来聊聊mysql调优都有哪几种方式。
1、存储引擎:
首先,我们可以选择适合的存储引擎,例如比较重要的,需要支持事务的,我们可以使用innoDB,存储登陆日志之类的,我们可以使用ARCHIVE,如果单纯的只是读多或者写多的,我们可以使用myIsam。
2、索引:
我们需要建立高效的数据库索引,索引并不是越多越好,在我们选择建立索引的时候,所选择的字段,需要尽可能的不一致,同时字段需要选择经常作为查询条件的存在,索引列的字段长度也不要选择太长的。
对于联合索引,需要记住最左匹配原则。所以我们在创建联合索引要按照优先级进行排序。
我们也可以选择不同的索引类型,但是对于这个我掌握的比较薄弱,所以就不提用哪几种了
3、sql语句:
对于sql语句,其实是效率并不是特别高,因为我们的数据库底层都是有自己的优化措施的,但是有的点确实需要我们注意;
对于模糊查询来说,如果是索引列,使用'%name'就会使用全表查询,但是使用‘name%’,我们还能正常享受索引的快捷的
如果连接查询,善用EXISTS和IN,如果是exists,那么以外层表为驱动表,先被访问,如果是IN,那么先执行子查询。所以IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。
在where中避免在左侧使用表达式(age*2=36),避免使用 != 或者 <>,避免使用对字段进行null判断。