关于数据库:数据库系统概论王珊第九章关系查询处理和关系优化第四节查询优化之物理优化

41次阅读

共计 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:排序 - 合并连贯算法的代价估算公式

正文完
 0