基于存取路径的规则优化.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于存取路径的规则优化

基于存取路径的规则优化 纯代数优化未考虑到查询表上的存储情况,可能会盲目优化。 根据被查询表上的索引等情况,总结一套非定量的规则,用于进行执行方案的选择。 对每一种关系代数的操作单独考虑这些规则 选择操作的规则优化 选择操作的执行策略与下列因素有关: 选择条件:等值,范围 可用的存取路径 选取的元组数 选择操作的实现方法 顺序扫描 利用主键索引 利用二次索引或簇集索引 等值查询效率与范围查询效率 散列索引,如果在查询字段上建有散列索引,且是等值查询 如果是范围查询的效率如何? 多属性索引 选择操作的优化规则 小关系:顺序扫描 结果为20%以上,顺序扫描 主键上的等值查询,用主索引 非主键上的等值查询 小于20%,用二次索引 大于20%,用簇集或顺序扫描 范围查询,用B+树的顺序集或簇集索引 选择条件是在排序主索引上的比较 选择条件是在次索引上的比较 如果无索引,用顺序扫描 选择操作的优化规则 AND连接的多条件选择 多属性索引 预查找法 利用部分索引,同时进行其它条件的判断 建立临时索引 顺序扫描 OR连接的多条件选择 分条件计算 预查找法 顺序扫描 选择操作的优化规则 直接利用索引 在索引键上的选择 部分聚集函数的计算 MIN MAX COUNT SUM AVG JOIN的优化 JOIN操作的几种计算方法 Nested-loop join Block nested-loop join Indexed nested-loop join Merge-join Hash-join Indexed Nested-Loop Join (C) 如连接计算时,内关系中有超过20%的元组会被连接上,则用顺序扫描比用无序的二次索引的效率高。 选用连接方法总结 两个关系已按连接属性排序,并且为等值或自然连接时,则采用排序归并法。 两个关系中一个关系已按连接属性排序,另一个没有排序: 如未排序的关系较小,可先将小关系排序,再采用排序归并法。 如未排序的关系建立有B+树次索引,可采用混合归并连接方法。 两个关系中一个关系在连接属性上建立有索引或散列 可将该关系作为内关系,利用索引或散列寻找匹配元组。 如果两个关系均在连接属性上建立有索引,可将小关系作为外关系。 如果作为内关系建有次索引,但匹配元组较多时,可采用基本嵌套循环法。 在连接属性上无任何存取路径,可采用基本嵌套循环法。 在连接属性上无任何存取路径的等值或自然连接,可采用散列连接法。 组合操作 一个查询操作中可包含多个操作,因此,尽量将其中的操作组合起来同时进行,可以减少临时文件的创建,省去许多I/O操作。 例子:P128 各种执行方案中操作计算的代价 通过定量的代价比较,进行更精确的方案选择,前面的规则优化中仅提供基于访问路径的算法和一些启发式规则。 代价只能估算: 磁盘的I/O次数 代价估算优化时用到的数据 nR---关系R中的元组数; pR---关系R的块因子,即每个物理块中所含的元组数 Na---属性a在关系中不同值的个数 Fa---属性a的选择因子,即属性a为某一属性值的概率,一般假定属性值均匀分布,即Fa=1/Na。 Ma---属性a的域的大小; L---索引的级数。 选择操作的代价估算 1。顺序扫描 (1)最多选取一个元组 Csa=0.5[n/p]=0.5b (2)选取多个元组 Csb=b 选择操作的代价估算(续) 2。利用主键上的索引或散列进行等值查询 (1)通过索引 CIk=L+1 (2)通过散列(假定没溢出) Chk=1 选择操作的代价估算(续) 3。利用非主键上的无序索引进行等值查询 满足条件的元组数估计为 s=n/N=n*F 当s(n-p)时,m=b; m为需访问块数 当s=(n-p)时,m?b[1-(1-1/b)s] S很大时,m ?b; 可采用顺序扫描 Sb时,m ?s. (最坏的情况,元组散放在不同的物理块上。) 偏高估计: CINK=L+s 选择操作的代价估算(续) 4。利用簇集索引进行等值查询 CCI=L+?s/p? 5。范围查询: 1) 利用簇集索引进行范围查询时,如满足范围查询条件的元组数很难估计时,一般取总元组数的一半。 CCIR=L+b/2 2) 非簇集索引进行范围查询时不如采用顺序扫描。 Csb=b 选择操作的代价估算(例) Student关系,n=10000, b=2000, 则p=5 在dept上建有簇集索引,Ndept=25, L=2 在sno上建有主索引,Nsno=10000, L=4 在dno上建有二次索引,Ndno=20, L=

文档评论(0)

womei + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档