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