码迷,mamicode.com
首页 > 数据库 > 详细

mysql优化

时间:2020-05-26 15:28:41      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:表名   重复   子查询   http   优化   内存   The   image   nbsp   

sql的书写规范:

1.表名需要有意义

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

3.缩进

4.空格

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

 

sql技巧:

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

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

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

技术图片

 

技术图片

 

 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 

技术图片

 

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

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

技术图片

 

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

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

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

 4.进行默认类型转换

技术图片

 

 技术图片

 

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

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

技术图片

 

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

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

 9.简单字符串表达式

技术图片

 

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

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

11.优化count(*)

技术图片

 

mysql优化

标签:表名   重复   子查询   http   优化   内存   The   image   nbsp   

原文地址:https://www.cnblogs.com/xiatc/p/12965586.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!