mysql优化

sql的书写规范:

1.表名需要有意义

2.注释 单行注释 -- 多行注释 /*   */

3.缩进

4.空格

5.大小写 关键字用大写  表名列名用小写

sql技巧:

1.CASE WHEN THEN ...ELSE END  用于查询  或者用于修改

2.HAVING 一般和聚合函数一起使用的 也可单独使用 count(*)

3.自连接 删除重复行  排序

mysql优化

mysql优化

 4.COALESCE函数 可以对null值进行转换 COALESCE(city,‘N/A‘)

sql优化:

1.参数是子查询的时候 用EXISTS 代替IN (用在where后面  只返回两个值 true和false)

原因:可以使用索引 避免全表扫描  不会产生临时表 

2.避免排序

会产生排序的运算

GROUP BY 

ORDER BY 

聚合函数(SUN  AGV COUNT MAX MIN)

DISTINCT 

集合运算符(UNION  INTERSECT EXCEPT)

窗口函数(RANK ROW_NUMBER)

如果在内存上排序还好 但如果内存不足导致需要在硬盘上排序的话 性能会急剧下降 所以需要减少不必要的排序

1)UNION 更改为UNION ALL 会查询所有的数据 包括重复的

2)用EXISTS代替DISTINCT 

mysql优化

 3)在极值函数中使用索引  (也会进行全表查询 不会索引中本身就是有顺序的)

 4)能写在WHERE  中的条件不写在HAVING中  

mysql优化

 5)在GROUP BY和ORDER BY中使用索引  可以根据索引中的顺序省略排序

 6)使用索引的时候 字段应该是原始字段 

 3.尽量避免使用否定形式 不会命中索引  < >  !=  NOT IN

 4.进行默认类型转换

mysql优化

 mysql优化

 5.减少中间表  内存的消耗  原始表的索引不容易找到

 6.需要对多个字段进行IN查询的时候 将他们汇总到一处

mysql优化

 7.使用联合索引的时候 遵循最左原则

 8.LIKE的时候 遵循最左原则

 9.简单字符串表达式

mysql优化

 10.尽量使用自增id作为主键

主键的原则:自增  尽量小 不对主键进行修改

11.优化count(*)

mysql优化