SQL 优化建议

优化建议

数据库中最大的性能瓶颈就是磁盘io,主要体现在读写前寻找磁道的过程中;另一个影响性能因素是内存,innodb在内存中开辟了一个Buffer_Pool缓冲池,然后把数据页和索引页都放在内存缓冲池中读写,影响缓冲池的参数是innodb_buffer_pool_size,如果仅有innodb存储引擎的数据库服务器上,可以设置为60%的内存

对于同一份数据,当我们使用不同的方式去寻找其中的内容时,所需要读取的数据量可能是天壤之别,所消耗的资源相差也很大

join语句优化

  • 使用小表驱动大表(小结果集驱动大结果集),减少join语句的nestedLoop的循环总数
  • 优先优化内层循环,内层循环是执行次数最多的
  • 保证join语句中被驱动表上的join条件已被索引
  • 尽量用join代替子查询
  • join buffer的大小对整个join语句的消耗起到关键的作用

减少排序

排序会消耗较多 CPU 资源,所以减少排序可以在缓存命中率高、IO 能力足够的场景下会影响 SQL 的响应时间

减少排序的方法

  • 通过利用索引来排序的方式进行优化
  • 减少参与排序的记录条数
  • 非必要不对数据进行排序

减少or的使用

当 where 子句中存在多个条件以“或”并存的时候,MySQL 的优化器并没有很好的解决其执行计划优化问题,再加上MySQL 特有的 SQL 与 Storage 分层架构方式,造成了其性能比较低下,使用 union all 或者是union(必要的时候)的方式来代替“or”会得到更好的效果

防止出现索引失效的情况

  • 计算
  • 使用not,<>,!=
  • 使用IS NULL和IS NOT NULL
  • 数据类型转换
  • 对索引字段使用函数或者表达式
  • 索引字段中不要有null

group by优化

group by中where高于having,能写在where中的限定条件就不要去having中限定

https://zhhll.icu/2021/数据库/关系型数据库/MySQL/进阶/12.优化建议/

本文由 mdnice 多平台发布

相关推荐

  1. SQL 优化建议

    2024-01-27 19:20:02       32 阅读
  2. MySQL 8.0 的 SQL 优化建议

    2024-01-27 19:20:02       20 阅读
  3. MySQL 优化建议

    2024-01-27 19:20:02       21 阅读
  4. <span style='color:red;'>Sql</span><span style='color:red;'>优化</span>

    Sql优化

    2024-01-27 19:20:02      28 阅读
  5. SQL优化

    2024-01-27 19:20:02       27 阅读
  6. SQL优化

    2024-01-27 19:20:02       20 阅读
  7. sql优化

    2024-01-27 19:20:02       13 阅读
  8. <span style='color:red;'>SQL</span><span style='color:red;'>优化</span>

    SQL优化

    2024-01-27 19:20:02      9 阅读
  9. SQL 优化

    2024-01-27 19:20:02       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-27 19:20:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-27 19:20:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-27 19:20:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-27 19:20:02       20 阅读

热门阅读

  1. MySQL运维实战(4.8) SQL_MODE之NO_ENGINE_SUBSTITUTION

    2024-01-27 19:20:02       32 阅读
  2. 使用scyllaDb 或者cassandra存储聊天记录

    2024-01-27 19:20:02       32 阅读
  3. 天梯赛 L3-020 至多删三个字符

    2024-01-27 19:20:02       36 阅读
  4. 《动手学深度学习(PyTorch版)》笔记4.2 4.3

    2024-01-27 19:20:02       34 阅读
  5. Implement Trie (Prefix Tree)

    2024-01-27 19:20:02       27 阅读
  6. Oracle 数据库(卸载)详细过程

    2024-01-27 19:20:02       34 阅读
  7. spring自动配置的原理

    2024-01-27 19:20:02       32 阅读