共计 1415 个字符,预计需要花费 4 分钟才能阅读完成。
- pdf 下载:明码 7281
- 专栏目录首页:【专栏必读】(考研复试)数据库系统概论第五版(王珊)专栏学习笔记目录导航及课后习题答案详解
代数优化扭转查问语句中操作的秩序和组合,但 不波及底层的存取门路 。对于一个查问语句有许多存取计划,它们的执行效率不尽相同,因而, 仅仅进行代数优化是远远不够的
物理优化就是要 <font color=”0000ff”> 抉择高效正当的操作算法或存取门路以求得优化的查问打算 </font>。具体方法有
- 基于规定的启发式优化:启发式规定是指那些在大多数状况下都实用,但不是在每种状况下都是最好的规定
- 基于代价估算的优化:应用优化器估算不同执行策略的代价,并选出具备最小执行代价的执行打算
- 两者联合的优化办法
一:基于启发式规定的存取门路抉择优化(定性)
(1)抉择操作的启发式规定
A:小关系
对于小关系,应用 <font color=”0000ff”> 全表程序扫描 </font>,即便抉择列上有索引
B:大关系
启发式规定有:
- 对于抉择条件是 <font color=”0000ff”>“主码 = 值”</font> 的查问,查问后果最多是一个元组,能够抉择 <font color=”0000ff”> 主码索引 </font>。个别的 RDBMS 会主动建设主码索引
- 对于抉择条件是 <font color=”0000ff”>“非主属性 = 值”</font> 的查问,并且抉择列上有索引,同样要估算查问后果的元组数目,如果 <font color=”0000ff”> 选择率 <10%</font> 能够应用 <font color=”0000ff”> 索引扫描办法 </font>,否则还是应用全表扫描
- 对于 <font color=”0000ff”> 用 AND 连贯的合取抉择条件 </font>,如果有波及这些属性的组合索引,则优先采纳 <font color=”0000ff”> 组合索引扫描办法 </font>
- 对于 <font color=”0000ff”> 用 OR 连贯的析取抉择条件 </font>,个别应用全表程序扫描
(2)连贯操作的启发式规定
- 如果 2 个表都曾经依照连贯属性排序,则选用 <font color=”0000ff”> 排序 - 合并算法
- 如果一个表在连贯属性上有索引,则能够选用 <font color=”0000ff”> 索引连贯算法
- 如果下面 2 个规定都不实用,其中一个表较小,则能够选 <font color=”0000ff”> 用 hash join 算法
- 最初能够选用 <font color=”0000ff”> 嵌套循环算法,并抉择其中较小的表,确切地讲是占用的块数 (B) 较少的表,作为表面(外循环的表)</font>(具体起因在第二节曾经讲过)
二:基于代价估算的优化(定量)
(1)统计信息
基于代价的优化办法要计算各种操作算法的执行代价,它与数据库的状态密切相关。为此在数据字典中存储了优化器须要的 统计信息(database statistics), 次要包含如下几个方面:
- 根本表:该表的元组总数($N$)、元组长度($l$)、占用的块数($B$)、占用的溢出块数($BQ$)等
- 根本表每个列:该列不同值的个数($m$)、该列最大值、最小值,该列上是否曾经建设了索引,如果有,又是哪一种索引等
- 索引:索引的层数($L$)、不同索引值的个数、索引的抉择基数 $S$ 等
(2)代价估算示例
- 此局部理解即可,不做深刻探索
A:全表扫描算法代价估算公式
B:索引扫描算法代价估算公式
C:嵌套循环算法代价估算公式
D:排序 - 合并连贯算法的代价估算公式
正文完