MySQL 的优化

mysql优化主要分为:配置优化、sql语句优化、表结构优化、索引优化等等。

配置优化:

  • 操作系统内核的优化
  • mysql配置文件的优化
    系统内核的优化对专业的mysql服务器来说,无非是内存使用、连接数、超时处理、TCP处理等方面的优化,根据自己的硬件配置来进行优化。
    mysql配置的优化,一般包含:IO处理的常用参数、最大连接数设置、缓存使用的参数设置、慢日志的参数设置、innodb相关的参数设置等。

sql语句的优化:

  1. 对查询进行优化,尽量避免全盘扫描,首先考虑where和order by涉及的列上建立索引。
  2. 尽量避免在where子句中对字段进行null判断,否则将导致引擎放弃使用索引而进行全盘扫描,最好不要给数据库留null,尽可能的使用not null填充数据库。(可以在字段中设置默认值0,想确保字段是否null的时候判断是否等于0)
  3. 尽量避免在where子句中使用!=或<>操作符,否则引擎将放弃索引而进行全盘扫描。
  4. 尽量避免在where子句中使用or来连接条件,如果一个字段没有索引,一个字段有索引将导致引擎放弃使用索引。
  5. in和not in要慎用,对于连续的数值能用between就不要用in,很多时候exists代替in是很好的选择。
  6. 使用like的%放在前面也会导致全表扫描,若想提高效率考虑全文检索。
  7. 如果在where子句中使用参数也会导致全表扫描。
  8. 尽量避免在where子句中对字段进行表达式操作。
  9. 尽量避免在where中对字段进行函数式操作。
  10. 不要在where子句中的=左边进行函数,算数。
  11. update如果只更改1、2个字段不要update全部字段。
  12. 对于多张大数据量的表join,要先分页再join否则逻辑读会很高。
  13. 用具体的字段代替*。

表结构优化:

  1. 在满足需求的情况下,尽可能选择小的数据类型。
  2. 尽可能选择简单的数据类型。
  3. 尽可能将表字段都设成not null。

索引优化:

索引就是为特定的mysql字段进行特殊的算法排序,比如二叉树和哈希算法,哈希算法是通过建立特征值,根据特征值来查找。
mysql默认用的是二叉树算法btree,通过btree建立索引的字段。

  1. explain优化查询进检测:explain显示了mysql如何使用索引来处理select语句以及连接表,可以帮助选择更好的索引和写出更优化的查询语句
    使用方法就是在select前面加上explain就可以。
    mysql在执行一条语句之前,会对发出的每一条sql进行分析,决定是否使用索引或全盘扫描。
  2. 索引
    索引的类型:
    unique:唯一索引(不可以出现相同的值);
    index:普通索引(允许出现相同的索引内容);
    primary key :主键索引(不允许出现相同的值,且不能null值,一个表中只能由一个);
    fulltext index:全文索引(可以针对之中的某个单词)
  3. 索引的curd
    索引的创建:alter table 表名 add 索引类型 【索引名】(字段名)
    create index和create unique可对表增加普通索引或唯一索引
    删除:drop index ‘index_name’ on ‘table_name’删除主键索引只能用alter table ‘table_name’ drop primary key
    查看show index from tablename \G
  4. 创建索引的技巧
    1)维度高的列创建索引(维度代表列种不重复值出现的个数比如[a,b,c,d,a,a,d,d]维度为4);
    2)对where,on,group by,order by中出现的列使用索引。
    3)对较小的数据列使用索引。
    4)为较长的字符串使用前缀索引。
    5)不要过多的创建索引。
    6)使用组合索引,可以减少文件索引的大小,在使用时速度要优于单列索引;

你可能感兴趣的:(算法和数据结构)