一、表设计优化

  1、简单既优

    数组和字符要给范围,不易过长过大

    时间尽量使用时间戳格式,占用的存储空间比较少

    字段和表注释必不可少

  2、索引设置

    常用查询字段要添加索引

    如果能使用联合索引代替的尽量使用联合索引代替

  3、合适的表引擎

    myisam更适合读写较快的地方

    innodb更适合处理事务和更新删除

二、查询优化

  1、范查询最好禁止

    查询字段要具体,尽量避免使用*

  2、尽可能使用索引

    根据不同索引,查询时最好使用索引

  3、exists和in使用特点

    如果查询的两个表大小相当,那么用in和exists效率差别不大

    如果两个表中一个较小,一个较大,则子查询表大的用exists,子查询表小的用in

三、数据量过高优化

  1、分区分表,mysql5.5之后分区逐渐代替了分表

  2、主从设置,可以一主多从和多主多从

四、sql分析

  1、explain 后面跟sql语句

  主要的字段 type,rows,keys ;

    type指定了该sql使用那种类型的查询

    keys知道了该sql使用了那些索引

    rows知道了查询结果需要遍历多少行才可以得到结果

五、常见mysql配置

  错误日志  

   log-error= dir

  慢查询

   slow_query_log = 1   #开启

   slow_query_log_file = /data/log/mysql/slow_query.log   #日志
  
   long_query_time = 0.5  #设置慢查询界限,单位秒

  binlog

    binlog_format = mixed     #设置日志格式

    log-bin = /data/mysql/logs/mysql-bin.log   #设置binlog日志存储地址

    expire_logs_days = 7  #设置失效时间

    max_binlog_size = 100m  #设置日志文件大小

    binlog_cache_size = 4m   #设置binlog缓存大小

    max_binlog_cache_size = 512m  #最大缓存大小

  

02-14 02:55