0
点赞
收藏
分享

微信扫一扫

SQL优化

穆风1818 2022-03-25 阅读 55
sqlmysql

SQL优化

https://blog.csdn.net/weixin_53601359/article/details/115553449

sql的语法顺序

1. SELECT <返回数据列表> # 返回的单列必须在group by子句中,聚合函数除外

2. DISTINCT <select_list> # 数据除重

3. FROM <left_table> <表名> # 选取表

4. <join_type> JOIN <right_table> # 指定join,用于添加数据到on之后的虚表中

5. ON <join_condition> <筛选条件> # 对笛卡尔积的虚表进行筛选

6. WHERE <where_condition> <where条件> # 对上述虚表进行筛选

7. GROUP BY <group_by_list> <分组条件> # 分组

8. HAVING <having_condition> <分组筛选> # 对分组后的结果进行聚合筛选

9. ORDER BY <order_by_condition> <排序条件> # 排序

10.LIMIT <limit_number> <行数限制>

sql的执行顺序

FROM <表名> # 选取表,将多个表数据通过笛卡尔积变成一个表。 ON <筛选条件> # 对笛卡尔积的虚表进行筛选 JOIN <join, left join, right join...> <join表> # 指定join,用于添加数据到on之后的虚表中,例如left join会将左表的剩余数据添加到虚表中 WHERE <where条件> # 对上述虚表进行筛选 GROUP BY <分组条件> # 分组 <SUM()等聚合函数> # 用于having子句进行判断,在书写上这类聚合函数是写在having判断里面的 HAVING <分组筛选> # 对分组后的结果进行聚合筛选 SELECT <返回数据列表> # 返回的单列必须在group by子句中,聚合函数除外 DISTINCT # 数据除重 ORDER BY <排序条件> # 排序 LIMIT <行数限制>

MySQL优化遵循的五个原则

  1. 减少数据访问: 设置合理的字段类型,启用压缩,通过索引访问等减少磁盘IO
  2. 返回更少的数据: 只返回需要的字段和数据分页处理 减少磁盘io及网络io
  3. 减少交互次数: 批量DML操作,函数存储等减少数据连接次数
  4. 减少服务器CPU开销: 尽量减少数据库排序操作以及全表查询,减少cpu 内存占用
  5. 利用更多资源: 使用表分区,可以增加并行操作,更大限度利用cpu资源

总结到SQL优化中,就三点:

  1. 最大化利用索引;
  2. 尽可能避免全表扫描;
  3. 减少无效数据的查询;

基础SQL优化

  1. 查询SQL尽量不要使用select *,而是具体字段

反例: SELECT * FROM student

正例: SELECT id,NAME FROM student

理由:

  1. 字段多时,大表能达到100多个字段甚至达200多个字段
  2. 只取需要的字段,节省资源、减少网络开销
  3. select * 进行查询时,很可能不会用到索引,就会造成全表扫描
  1. 避免在where子句中使用or来连接条件
  2. 使用varchar代替char
  3. 尽量使用数值替代字符串类型
  4. 查询尽量避免返回大量数据
  5. 使用explain分析你SQL执行计划
  6. 是否使用了索引及其扫描类型
  7. 创建name字段的索引
  8. 优化like语句:
  9. 字符串怪现象
  10. 索引不宜太多,一般5个以内
  11. 索引不适合建在有大量重复数据的字段上
  12. where限定查询的数据
  13. 避免在索引列上使用内置函数
  14. 避免在where中对字段进行表达式操作
  15. 避免在where子句中使用!=或<>操作符
  16. 去重distinct过滤字段要少
  17. where中使用默认值代替null

高级SQL优化

  1. 批量插入性能提升
  2. 批量删除优化
  3. 伪删除设计
  4. 提高group by语句的效率
  5. 复合索引最左特性
  6. 排序字段创建索引
  7. 删除冗余和重复的索引
  8. 不要有超过5个以上的表连接
  9. inner join 、left join、right join,优先使用inner join
  10. in子查询的优化
  11. 尽量使用union all替代union

举报

相关推荐

0 条评论