MySQL 查询深入浅出

查询执行过程

MySQL 的查询过程总的来说分为五个步骤:

  1. 向 MySQL 服务器发送一条查询请求;
  2. 服务器首先检查查询缓存,如果命中缓存,则会立刻返回存储在缓存中的数据,否则进入下一阶段;
  3. 服务对 SQL 进行解析、预处理、再由优化器生成对应的执行计划;
  4. MySQL 根据执行计划,调用存储引擎 API 来执行查询;
  5. 将结果返回客户端,同时缓存查询结果。

查询缓存

查询缓存对系统的额外消耗不止在写操作,也在于读操作:

  1. 任何查询语句在开始之前都必须经过检查,即使这条 SQL 不会命中查询缓存;
  2. 两条相同的 SQL 语句,其中一条因为大写字母、多余的空格,那会在查询缓存时是不会被命中的,所以规范中我们写 SQL 语句时,要大写都大写,要小写都小写;
  3. 如果查询结果是可以被缓存的,那么执行完成后,会将结果缓存,但也会为系统带来额外消耗;
  4. 如果缓存结果相关表的数据进行了更改,则缓存结果就会失效;

查询优化器

MySQL 的查询优化器时一个非常复杂的部件,它使用了非常多的优化策略来生成一个最优的执行计划,比如:

  1. 重新定义表的关联顺序(多张表关联查询时,并不一定按照 SQL 中指定的顺序进行,但有一些技巧可以指定关联顺序);
  2. 优化 MIN() 和 MAX() 函数(找某列的最小值,如果该列有索引,只需要查找 B+Tree 索引最左端,反之则可以找到最大值);
  3. 提前终止查询(比如:使用 LIMIT 时,查找到满足数量的结果集后会立即终止查询);
  4. 优化排序(在老版本 MySQL 会使用两次传输排序,即先读取行指针和需要排序的字段在内存中对其排序,然后再根据排序结果去读取数据行,而新版本采用的是单次传输排序,也就是一次读取所有的数据行,然后根据给定的列排序。对于 I/O 密集型应用,效率会高很多)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值