概要:

Mysql的优化,大体可以分为三部分:索引的优化,sql语句的优化,表的优化。本文主要帮助自己整理思路,也可作为一个学习MySQL优化的提纲。

索引的优化

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

sql语句的优化

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

表的优化

  1. 表的字段尽可能用NOT NULL
  2. 字段长度固定的表查询会更快
  3. 把数据库的大表按时间或一些标志分成小表
  4. 将表分区

一个SQL引发的思考

mysql分析优化在线 mysql实战优化高手_mysql分析优化在线

常用的优化方式

mysql分析优化在线 mysql实战优化高手_性能优化_02

反范式化设计

mysql分析优化在线 mysql实战优化高手_数据库_03

三大范式

mysql分析优化在线 mysql实战优化高手_mysql分析优化在线_04

mysql分析优化在线 mysql实战优化高手_字段_05

mysql分析优化在线 mysql实战优化高手_sql语句_06

物理设计

mysql分析优化在线 mysql实战优化高手_字段_07

索引是什么?

mysql分析优化在线 mysql实战优化高手_数据库_08

最简单的索引

mysql分析优化在线 mysql实战优化高手_性能优化_09

稍微复杂点的索引

mysql分析优化在线 mysql实战优化高手_数据库_10

MySql中的索引

mysql分析优化在线 mysql实战优化高手_sql语句_11

索引分类

mysql分析优化在线 mysql实战优化高手_sql语句_12

总结

优化通常都需要三管齐下:不做、少做、快速地做。我们希望这里的案例能够帮助你将理论和实践联系起来。


本文的重点是MySql性能优化。