网站建设怎样去销售,衡水哪有建网站的吗,工程项目,四川华地建设工程公司网站文章目录 简介什么是查询优化器查询优化器的两种优化方式总结参考文献 简介 
事务可以让数据库在增删改查的过程中#xff0c;保证数据的正确性和安全性#xff0c;而索引可以帮数据库提升数据的查找效率。查询优化器#xff0c;则是帮助我们获取更高的SQL查询性能。 
本节我… 文章目录 简介什么是查询优化器查询优化器的两种优化方式总结参考文献 简介 
事务可以让数据库在增删改查的过程中保证数据的正确性和安全性而索引可以帮数据库提升数据的查找效率。查询优化器则是帮助我们获取更高的SQL查询性能。 
本节我们将简单过一下查询优化器的原理主要包括以下几部分 
什么是查询优化器具体的流程和环节查询优化器的两种优化方式是什么 
什么是查询优化器 
一条SQL语句的执行一般会经过以下环节如图 语法分析检查SQL拼写和语法是否有问题。 
语义检查检查SQL语句中的访问对象是否存在即表名、列名啥的 
经过语法分析和语义检查无误之后就会生成一棵语法分析树进行优化器优化生成查询计划。 
所以查询优化器的目标就是找到当前SQL查询的最佳执行计划或者说查询树它是由一系列物理操作符组成这些操作符按照一定的运算关系组成查询的执行计划。 
而在查询优化器中可以分为逻辑优化阶段和物理优化阶段。 逻辑优化就是通过改变SQL语句的内容来使得查询更加高效并为物理优化阶段提供更多的候选执行计划。 
那逻辑优化是如何改变SQL语句的内容呢 
通常采用的方式是对SQL语句进行等价变换基于关系代数做查询重写。比如说对条件表达式做等价谓词重写、条件简化对视图进行重写对子查询进行优化对连接语义进行外连接消除、嵌套连接消除等。 
逻辑优化中的每一步都对应着物理计算因此逻辑优化阶段输出若干候选执行计划之后物理优化阶段会计算这些计划的代价从中选择代价最小的作为执行计划。 
因此逻辑优化属于语法层级的优化而物理优化实际上是一种依据代价的估算模型相当于是从连接路径中选择代价最小的路径因此属于物理层面的优化。 
查询优化器的两种优化方式 
查询优化器的目的是生成最佳的执行计划那什么是最佳如何生成最佳执行计划通常有两种策略 
基于规则的优化器RBORule-Based Optimizer基于代价的优化器CBOCost-Based Optimizer 
什么是基于规则的优化器 
规则就是先验知识是人们以往的经验或者是被证明已经是有效的方式。 
通过在优化器里嵌入规则来判断输入的SQL查询符合哪种规则符合哪种就按照对应的规则来制定执行计划同时采用启发式规则去掉明显不好的存取路径。 
什么是基于代价的优化器 
根据代价评估模型计算每条候选执行计划的代价就是cost优化器会从中选择代价最小的一条执行计划作为最佳执行计划。 
相比RBO来说CBO对数据更加敏感因为它会利用数据表中的统计信息做判断。针对不同的数据表相同的查询得到的执行计划可能是不同的两种优化器的最大差异因此制定出来的执行计划更符合数据表的实际情况。 
而RBO相同查询的规则是相同的因此对于不同的数据表得到的执行计划基本是一样的。 
需要注意在优化器中会存在各种组合的可能。比如说我们需要优化器来制定数据表的扫描方式、连接方式以及连接顺序等。 
总结 
优化器的两个阶段逻辑优化阶段和物理优化阶段。 
逻辑优化阶段是对查询语句进行重写并输出多种候选的最佳计划。物理阶段是从多种候选计划里找出代价最小的计划。 
优化器的两种优化方式基于规则的RBO和基于代价的CBO。 
RBO是根据固有的规则来给出执行计划很简单的一个模型对于不同表上的相同查询RBO可能会返回相同的执行计划但是CBO会考虑表的数据量等条件返回不同的执行计划。因此CBO更加贴合实际一些。 
参考文献 
32丨查询优化器是如何工作的