Mysql的优化,大体可以分为三部分:索引的优化,sql语句的优化,表的优化。
索引优化
- 只要列中含有NULL值,就最好不要在此列设置索引,复合索引如果有NULL值,此列在使用时也不会使用索引。
- 索引的字段尽量要短一点。
- 对于经常在where子句使用的列,最好设置索引,这样会加快查找速度。
- 对于有多个列where或者order by子句的,应该建立复合索引。
- 尽量不要在列上进行运算(函数操作和表达式操作)。
- 索引在处理not in 和 <> 操作时会显得吃力。
sql语句的优化
查询优化就要尽可能避免全表扫描。
- 查询时,能不要*就不用*,尽量写全字段名,因为从数据库中读出越多的数据,查询就会变得越慢。
- where 及 order by 涉及的列上建立索引。
- 一般来说,join效率高于子查询的效率。
- 使用联合(UNION)来代替手动创建的临时表。
- 使用事务的属性,提高并发。
- 多表连接时,尽量小表驱动大表,即小表 join 大表,这样读出的数据更精炼。
- 对于经常使用的查询,可以开启缓存。
表的优化
- 表的字段尽可能用NOT NULL(选取最适用的字段属性)
- 字段长度固定的表查询会更快(底层对于长度固定的数据,处理的更快)
- 表的切分(水平切分,垂直切分)
MySql查询优化
- 缓存,在持久层或持久层之上做缓存。
- 恰当地使用索引。
- 表的拆分。
- 数据库表的大字段剥离。
- 放弃关系数据库的某些特性(比如事务),引入NoSQL数据库。