Mysql优化是一个老生常谈的问题,sql
优化的方向也优化不少:从架构层;从设计层;从存储层;从SQL语句层;架构
今天讲解一下从索引和字段:优化
字段优化:设计
① 尽可能使用TINYINT、SMALLINT、MEDIUM_INT做为整数类型而非INT,若是非负则加上UNSIGNED;索引
② VARCHAR的长度只分配真正须要的空间;字符串
③ 使用枚举或整数代替字符串类型;程序
④ 尽可能使用TIMESTAMP而非DATETIME;im
⑤ 单表不要有太多字段,建议在20之内;查询
⑥ 避免使用NULL字段,很难查询优化且占用额外索引空间;img
⑦ 用整型来存IP;
索引优化:
① 索引并非越多越好,要根据查询有针对性的建立,考虑在WHERE和ORDER BY命令上涉及的列创建索引,可根据EXPLAIN来查看是否用了索引仍是全表扫描;
② 应尽可能避免在WHERE子句中对字段进行NULL值判断,不然将致使引擎放弃使用索引而进行全表扫描;
② 值分布很稀少的字段不适合建索引,例如”性别”这种只有两三个值的字段;
③ 字符字段只建前缀索引;
④ 字符字段最好不要作主键;
⑤ 不用外键,由程序保证约束;
⑥ 尽可能不用UNIQUE,由程序保证约束;
⑦ 使用多列索引时主意顺序和查询条件保持一致,同时删除没必要要的单列索引;
后续会更新其他方面针对Mysql优化的建议.有疑问请直接给我留言.