mysql优化的经常使用方法

最近,在使用Mysql的时候,遇到一些查询优化问题,本身查阅资料,并顺带整理了一下。


Mysql的优化,大致能够分为三部分:索引的优化,sql语句的优化,表的优化


1.索引的优化


  • 只要列中含有NULL值,就最好不要在此例设置索引,复合索引若是有NULL值,此列在使用时也不会使用索引
  • 尽可能使用短索引,若是能够,应该制定一个前缀长度
  • 对于常常在where子句使用的列,最好设置索引,这样会加快查找速度
  • 对于有多个列where或者order by子句的,应该创建复合索引
  • 对于like语句,以%或者‘-’开头的不会使用索引,以%结尾会使用索引
  • 尽可能不要在列上进行运算(函数操做和表达式操做)
  • 尽可能不要使用not in和<>操做
2.sql语句的优化


  • 查询时,能不要*就不用*,尽可能写全字段名
  • 大部分状况链接效率远大于子查询
  • 多使用explain和profile分析查询语句
  • 查看慢查询日志,找出执行时间长的sql语句优化
  • 多表链接时,尽可能小表驱动大表,即小表 join 大表
  • 在千万级分页时使用limit
  • 对于常用的查询,能够开启缓存
3.表的优化


  • 表的字段尽量用NOT NULL
  • 字段长度固定的表查询会更快
  • 把数据库的大表按时间或一些标志分红小表
  • 将表分区