美文网首页
第六章 查询性能优化(下)

第六章 查询性能优化(下)

作者: 魅猫之 | 来源:发表于2020-03-16 00:07 被阅读0次

MySQL查询优化器的局限性

  • 关联子查询

MySQL的关联子查询实现的很差,最好改成左外连接(LEFT OUTER JOIN)

  • UNION的限制

UNION查询的数据会放到临时表中,所以无法使用索引优化,最好是在每个子查询中带上查询条件

  • 松散索引扫描(跳跃索引扫描skip index scan)

比如有索引(a,b),where b between 2 and 4,因为索引是有序的,在a相同的情况下,按照顺序取b的数据,不需要where子句过滤(MySQL目前不支持)

  • 最大值和最小值的优化

如果聚合的列不是索引列,那将会全表扫描

  • 在同一个表上查询和更新

不要使用子查询,改用INNER JOIN

优化特定类型的查询

  • COUNT()的作用
  1. 统计行数 2.统计列值的数量
    如果是统计行数的话,最好用COUNT(*)
    优化:使用近似值、汇总表
  • 优化关联查询

确保ON或者USING子句中的列上有索引
确保任何的GROUP BY和ORDER BY中的表达式都来自同一个表

  • 优化子查询

尽可能使用关联查询代替

  • 优化GROUP BY和DISTINCT

尽可能采用标识列分组

  • 优化LIMIT分页

尽可能使用覆盖索引,先从索引中取到具体分页主键,再关联查询出具体行的数据

  • 优化UNION查询

MySQL总是通过创建并填充临时表的方式来执行UNION查询
优化:在每个子查询中带上查询条件
如果不是必须要消除重复行,那就使用UNION ALL

相关文章

  • 后端技术栈

    Nginx 工作原理和优化、漏洞(下) Nginx 工作原理和优化、漏洞(下)Mysql查询性能优化的心得 前言:...

  • 第六章 查询性能优化(下)

    查询执行引擎 MySQL只是简单地根据执行计划给出的指令住不住想, 基本上是通过调用存储引擎实现的接口来完成, 这...

  • 第六章 查询性能优化(下)

    MySQL查询优化器的局限性 关联子查询 MySQL的关联子查询实现的很差,最好改成左外连接(LEFT OUTER...

  • MySQL性能调优

    MYSQL查询语句优化 mysql的性能优化包罗甚广: 索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬...

  • MySQL性能优化(慢查询)

    1 MySQL性能优化之慢查询 1.1 性能优化的思路 首先需要使用慢查询功能,去获取所有查询时间比较长的SQL语...

  • 《高性能Mysql》-查询优化

    优化性能需要查询优化、索引优化、库表结构优化这三辆马车齐头并进。这篇文章主要围绕查询优化,要对查询进行优化首先需要...

  • Day2:MySQL慢查询基础-查询慢原因

    说在前面: 查询优化、索引优化、库表结构优化是查询性能优化的三驾马车。 完成一个完整的查询生命周期,查询需要在...

  • 高性能MySQL(第三版)-第六章 1

    高性能MySQL(第三版) 是在MySQL5.5的基础上进行讲解的。研读了第六章 查询性能优化的1-4小节,记录一...

  • 高性能MySQL(第三版)-第六章 2

    高性能MySQL(第三版) 是在MySQL5.5的基础上进行讲解的。研读了第六章 查询性能优化的5-6小节,记录一...

  • 高性能MySQL(第三版)-第五章 1

    高性能MySQL(第三版) 是在MySQL5.5的基础上进行讲解的。研读了第六章 查询性能优化的1-2小节,记录一...

网友评论

      本文标题:第六章 查询性能优化(下)

      本文链接:https://www.haomeiwen.com/subject/nzwiehtx.html