语法分析器(语法分析器接收以()为单位)一篇读懂
解析器都做哪些事情其主要功能是将输入的SQL语句分解为语法单元,然后将这些语法单元转换为内部表示的数据结构,最终生成一个可执行的查询计划。解析器
解析器都做哪些事情其主要功能是将输入的SQL语句分解为语法单元,然后将这些语法单元转换为内部表示的数据结构,最终生成一个可执行的查询计划解析器是MySQL中的一个重要组成部分,它直接影响查询的性能和正确性。
词法分析:将SQL语句分解为语法单元(token),如SELECT、FROM、WHERE等关键字、表名、列名、运算符等词法分析器会识别和记录每个语法单元的类型和位置语法分析:将词法分析器生成的语法单元按照SQL语法规则组合成语法树。
语法分析器会检查SQL语句是否符合语法规则,同时生成抽象语法树,确定查询的逻辑结构语义分析:在语义分析阶段,MySQL的SQL解析器会对SQL语句的语义进行检查这一阶段的任务包括对表和列名进行解析,检查SQL语句的语义正确性,并将SQL语句转换为适当的内部数据结构。
优化器是怎么优化的优化器分为两种方式,逻辑查询优化和物理查询优化
逻辑查询优化:关系代数对SQL语句做一些等价变换,对条件表达式进行等价谓词重写、条件简化,对视图进行重写,对子查询进行优化,对连接语义进行了外连接消除、嵌套连接消除等物理查询优化:物理查询优化一般分为两种:。
基于规则的优化(RBO,Rule-Based Optimizer)这种方式主要是基于一些预置的规则对查询进行优化基于代价的优化(CBO,Cost-Based Optimizer)这种方式会根据模型计算出各个可能的执行计划的代价,然后选择代价最少的那个。
它会利用数据库里面的统计信息来做判断,因此是动态的举例:DISTINCT优化SELECT DISTINCT c1, c2, c3 FROM t1 WHERE c1 > const;优化成SELECT c1, c2, c3 FROM t1 WHERE c1 > const GROUP BY c1, c2, c3;
JOIN优化(join需要从一个表多次在其他表中匹配,数据重复度高的话会进行优化)SELECT class.class_num, class.class_name FROM class INNER JOIN roster WHERE class.class_num = roster.class_num;
优化成SELECT class_num, class_name FROM class WHERE class_num IN (SELECT class_num FROM roster);合并优化SELECT * FROM (SELECT * FROM t1) AS derived_t1;
优化成SELECT * FROM t1;
- 标签:
- 编辑:李松一
- 相关文章
-
炼狱蝰蛇驱动(炼狱蝰蛇驱动怎么下载安装)这都可以
10年的积累成就一个经典,用这句话来形容雷蛇的炼狱蝰蛇一点都不为过,在这10年时间里,炼狱蝰蛇一共推出了十几个版本,还有各种定制版,非…
-
笔记本显卡排名(笔记本显卡排名前十的品牌)奔走相告
我们想要知道CPU之间的性能高低,只需要通过一张“CPU”天梯图,就可以快速了解。笔记本移动版CPU相比台式机CPU在型号上更加繁多,并且…
- 火炬之光2洗点(火炬之光2洗点水合成)奔走相告
- register_chrdev(register_chrdev()函数)学会了吗
- 华为p40参数配置(华为P40参数配置详细对比)奔走相告
- tf卡速度(Tf卡速度)这都可以?
- tf卡速度(Tf卡速度)没想到