SQL优化问题的简述

SQL优化的7个方面

  1. 创建索引
  2. 避免索引失效
  3. 锁粒度(行锁还是表锁)
  4. 分页查询优化
  5. 避免查询所有字段
  6. 分析SQL的执行计划
  7. show profile 分析SQL的执行性能

创建索引

  • 禁止给表中的每一列都建立单独的索引
  • 每个Innodb表必须有一个主键
  • 要注意组合索引的字段顺序
  • 优先考虑覆盖索引
  • 避免使用外键约束

避免索引失效(失效场景)

  • %开头的LIKE查询
  • 在索引列上的操作,函数upper()等,or、!=、<>、not in等等
  • 创建了组合索引,但是查询条件不满足“最左匹配”原则
  • 查询条件中使用or,且or的前后条件中有一个列没有索引,则其中涉及的索引就都不会被使用

锁粒度(行锁 还是 表锁)

  • MySQL 的存储引擎分为两大类: MyISAM InnoDB 
  • MyISAM 支持只表锁
  • InnoDB 支持行锁表锁
  • 更新操作时,为了保证表数据的准确性,通常会加锁,为了提高系统的高并发能力,我们通常建议采用行锁,减少锁冲突、锁等待的时间。所以,存储引擎通常会选择 InnoDB

分页查询优化

避免查询所有字段

分析SQL的执行计划

show profile 分析SQL的执行性能


后续会逐渐完善...此章节先打个点

posted @ 2022-07-04 23:41  金鳞踏雨  阅读(8)  评论(0编辑  收藏  举报  来源