一、数据库设计优化
1、根据业务需求选择正确的存储引擎,如果对事务性要求高就用InnoDB(默认),读多写少尽量使用MylSAM。
2、设置合理的字段类型及字段长度,比如说你这个字段就20多个字段你设置成VARCHAR(255)就是对磁盘空间的浪费。
3、默认值尽可能的使用NOT NULL,可以通过设置默认值避免NULL值。
4、尽量少的使用VARCHAR,TEXT,BLOB这三个字段,这种类型占用很大的空间。
5、添加适当索引(index)[普通索引、主键索引、唯一索引unique、全文索引引。
6、不要滥用索引,大表索引,小表不索引
7、表的设计合理化(符合3NF)。
二、SQL语句优化
1、Explain
主要是关注4个指标:
1、type:优化目标至少达到range级别,要求是ref级别,如果可以const最好。
a、type性能从高到低
b、key:是查询使用到的索引,如果此列为空,要么未建立索引,要么索引失效。
c、rows:是这条SQL语句扫描的行数,越少越好。
d、extra:此列为扩展列,如果出现临时聚、文件排序则需要优化。
2、where、=条件避免类型转换
入参类型在传入前转换成跟字段类型一致。
内关联避免也要避免类型不一致做过滤
3.避免使用select *
4.、like引起索引失效,尽量满足最左匹配原则,建议这样写:
5、不要在where条件中带有函数计算、类型转换
6、关于in和exist,如果查询的俩个表大小一致则性能差别可忽略,如果子查询表大用exist,否则使用in
7、预知查询一条数据要加上limit 1,以便查到数据终止扫描.
8、关联查询尽量不要超过3个表关联
9、数据字段更新频繁、重复度高不适合建索引
10、 explain中的type至少要达到range,建议为ref
11、尽量用join代替子查询
12、尽量用union all代替union
13、数据优化常用命令
查看Mysql服务器的链接
查询慢查询次数
查看慢查询设置的时间,默认10s.
设置慢查询时间.
查看建表语句
查看表的字段
查看表的索引
历史文章及资料
领取专属 10元无门槛券
私享最新 技术干货