Mysql优化之索引和字段

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优化的建议.有疑问请直接给我留言.

相关文章
相关标签/搜索