Bootstrap

mysql常用优化

SQL优化是一个分析,优化,再分析,再优化的过程。站在执行计划的角度来说,我们这个过程,就是在不断的减少rows的数量。

 

1.建索引

2.减少表之间的关联

3.优化 sql,尽量让 sql 很快定位数据,不要让sql 做全表查询,应该走索引,把数据 量大的表排在前面

4.简化查询字段,没用的字段不要,已经对返回结果的控制,尽量返回少量数据

5.尽量用PreparedStatement 来查询,不要用 Statement

 

不要在列上使用函数和进行运算

不要在列上使用函数,这将导致索引失效而进行全表扫描。

尽量避免使用 != 或 not in或 <> 等否定操作符

尽量避免使用 or 来连接条件 多个单列索引并不是最佳选择,复合索引的最左前缀原则 查询中的某个列有范围查询,则其右边所有列都无法使用索引优化查找。

索引不会包含有NULL值的列

当查询条件左右两侧类型不匹配的时候会发生隐式转换,隐式转换带来的影响就是可能导致索引失效而进行全表扫描。

like 语句的索引失效问题

 

0.先运行看看是否真的很慢,注意设置SQL_NO_CACHE

1.where条件单表查,锁定最小返回记录表。这句话的意思是把查询语句的where都应用到表中返回的记录数最小的表开始查起,单表每个字段分别查询,看哪个字段的区分度最高

2.explain查看执行计划,是否与1预期一致(从锁定记录较少的表开始查询)

3.order by limit 形式的sql语句让排序的表优先查

4.了解业务方使用场景

5.加索引时参照建索引的几大原则

6.观察结果,不符合预期继续从0分析

 

如何做 MySQL 的性能优化?

为搜索字段创建索引。

* 避免使用 select *,列出需要查询的字段。 * 垂直分割分表。 * 选择正确的存储引擎。

 

实践中如何优化MySQL

顺序优化:

  1. SQL语句及索引的优化
  2. 数据库表结构的优化
  3. 系统配置的优化
  4. 硬件的优化
;