一:索引优化
1:尽量使用更小的类型,例如邮政编码用char(6) 就可以了。用varchar(6)也是多余的。因为varchar含有字符串长度属性,占用字节。
2: 简单就好: 数据类型越简单越好,例如比较整数的代价小于比较字符
3:尽量避免null, 因为索引时,还有处理null值。
4:选择合适的类型,例如 tinyint,enum等
5:当where或group by中的字段是在覆盖索引中,可以使用连接,先对条件字段的进行索引查询,然后再连接inner join。
6:在where字句中频繁出现的字段
7、频繁在join关联字段中
8:选择性较低的字段不要简历索引
9、不要在常被修改到字段上建索引。
10、不要对仅出现在where从句中的函数或表达式中的字段建索引,要么就建函数索引
11、可考虑在外键上建索引。
12、创建一个索引时,评估该索引给查询带来的性能优化是否比因其而引起INSERT,UPDATE,DELETE操作的性能下降以及索引占用的空间更要值得。
13、复合索引,提高io和选择性。
14:尽量使用一个与业务无关的自增字段作为主键
二:查询优化 https://www.cnblogs.com/exe19/p/5786806.html
https://www.cnblogs.com/wangning528/p/6388538.html
1:不查询不需要的数据
2:不返回不需要的数据
三:IO优化
I/O调优
innodb:a:可以控制如何恢复,还可以控制它如何打开表及刷写数据,b: 配置innodb日志大小及入额打开表及刷写数据。批处理(不用每条都及时写入,可以等到一定大小,再写入)
MyISAM a:设置缓存写入时间,延迟索引的写入
五:并发调优
innodb: 快照隔离,多版本控制(MVVC)
六: 按照工作负载对mysql进行调优的最有生产率的方式是检查 show global status 的输出,以了解哪些设置需要改变。
可以使用mysqlreport输出日志判断,哪些需要优化 https://www.cnblogs.com/shangzekai/p/4672726.html
七:每连接设置调优,每条连接需要的数据量,最好不要提前设置好,等需要的时候再设置。用完之后恢复默认就行了。
八:索引原理:http://blog.jobbole.com/24006/
mysql 优化 配置
https://www.cnblogs.com/thrillerz/p/3907421.html https://www.cnblogs.com/musings/p/5913157.html
参考:https://www.cnblogs.com/newbalanceteam/p/4947227.html
https://www.aliyun.com/jiaocheng/1111927.html
https://www.cnblogs.com/boothsun/p/6395122.html