一、表设计优化
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 #最大缓存大小