Mysql优化

Posted 岩文01

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql优化相关的知识,希望对你有一定的参考价值。

mysql优化可从四个层面着手:

  1. 表结构的设计
    • 字段类型的选取,尽量考虑使用整型类定义字段,比如在符合范围值的情况下使用tinyint、smallint;甚至可将IP定位为整型(4个字节,32位,IP的每一段刚好可以用8位二进制表示);
    • 如果字段类型为blob/text的列查询较少,而其它字段列有频繁查询,可将这些列分开设计在不同的表里(同一张表缓存查询有较大影响);
    • 与where、group by 和sort by 查询询字段建立适当索引,以下情况不适合建索引
      • CLOB和BLOB类型的数据不宜建索引;
      • 小型表(如300条记录以下的表)不需建索引(如果频繁更新操作会造成额外负担);
      • 查询中很少使用和参考的列不适合建索引;
      • 当修改性能远大于检索性能时不合适建索引
    •  建索引策略:
      • 创建唯一性索引可保证该列字段值的唯一性操作;
      • 逻辑上表空间和索引空间分开,但最好从物理上将索引数据和表数据分开存储;
      • 建索引时,会对表进行全表扫描,并进行排序,所以相应的初始化参数可能需要调整;同时因为会有锁表操作,所以不能在业务对该表进行操作时进行索引创建;
      • Mysql查询每次只能使用一个索引,所以如查询“select * from staff where name=‘XXX‘ and department=‘XXX‘ and age=23”,最好创建复合索引(name+department+age),该索引实际上是建立了(name+industry+age),(name+industry),(name)三个索引;如果name在查询中最频繁使用,则放在最左边;
      • 索引值不会包含NULL值,所以如果某一复合索引列的值含有NULL值,则列索引会失效;

以上是关于Mysql优化的主要内容,如果未能解决你的问题,请参考以下文章

mysql 优化包括哪些内容?

Mysql的性能优化

Mysql的性能优化

mysql 子查询 优化

MySQL Optimization

MySQL优化MySQL 高并发配置优化基础知识