高性能MySQL(3th)(第六章 sql优化) —— 06 查询优化器的工作

本文详细探讨了MySQL优化器在数据库架构中的核心作用,包括其静态与动态优化策略,以及如何通过常量替换、外连接转内连接等手段提升查询效率。特别分析了IN子句的优化原理,展示了其如何通过排序和二分查找提高性能。

一 优化器在MySQL架构中的位置:

二 先看逻辑上的作用

一言以蔽之:找到最好的执行计划。

 

三 静态优化和动态优化

这个和一般的编译器优化的区别差不多,静态优化即语法上的转换,替换常量等等,动态优化则要考虑实时的运行状态,选择最优的执行路线。

四 优化器常见的工作

简单的表达式中进行常量的等价替换:

MIN MAX COUNT:

外连接转化为内连接:

这里有个补充的小知识,内连接 左外连接 右外连接 全外连接 自然连接在结果上的区别,和在MySQL执行引擎运算过程上的区别。

 

连接查询时,where条件中对于连接列的限制,将会对两张都起作用,这样无论以哪张表为基础进行连接运算,该限制条件都能起到过滤的作用:

IN 的优化:

我们先从OR来认识一下where字句的过滤作用:

这里先不看为主键(索引)的id,只将其看作普通的一列,OR的过滤作用是这样的:

先按 type的方式(上例中是走全表扫描)进行扫描,对每一条记录,用where条件去筛选即判断是否符合该条件。对于多个OR而言,其实就是遍历这个OR序列,有一个满足则将该记录加入结果集,故复杂度为O(n)。

而就如上面的文字截图所述,MySQL对IN做了优化,将IN内的数值进行大小排序,这样扫描到一条记录时,就不用顺序遍历地去判断该值是否存在,直接走二分查找,复杂度为log(n),当然,这个对于IN有很多值时二者的效率区别才会显现出来。

 

 

其他的还有,但是这里不再展开:

 

 

 

提供了一个基于51单片机的RFID门禁系统的完整资源文件,包括PCB图、原理图、论文以及源程序。该系统设计由单片机、RFID-RC522频射卡模块、LCD显示、灯控电路、蜂鸣器报警电路、存储模块和按键组成。系统支持通过密码和刷卡两种方式进行门禁控制,灯亮表示开门成功,蜂鸣器响表示开门失败。 资源内容 PCB图:包含系统的PCB设计图,方便用户进行硬件电路的制作和调试。 原理图:详细展示了系统的电路连接和模块布局,帮助用户理解系统的工作原理。 论文:提供了系统的详细设计思路、实现方法以及测试结果,适合学习和研究使用。 源程序:包含系统的全部源代码,用户可以根据需要进行修改和优化。 系统功能 刷卡开门:用户可以通过刷RFID卡进行门禁控制,系统会自动识别卡片并判断是否允许开门。 密码开门:用户可以通过输入预设密码进行门禁控制,系统会验证密码的正确性。 状态显示:系统通过LCD显示屏显示当前状态,如刷卡成功、密码错误等。 灯光提示:灯亮表示开门成功,灯灭表示开门失败或未操作。 蜂鸣器报警:当刷卡或密码输入错误时,蜂鸣器会发出报警声,提示用户操作失败。 适用人群 电子工程、自动化等相关专业的学生和研究人员。 对单片机和RFID技术感兴趣的爱好者。 需要开发类似门禁系统的工程师和开发者。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值