- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第04关系查询处理和查询优化
2、若选择的条件是主码=值的查询,有多少个结果,应该怎样进行操作? 1个,使用主码索引——百里挑一 3、若选择的条件是非主属性=值的查询,有多少个结果,应该怎样进行操作? 多个,需要根据具体情况来选择,例如在student表中,选择条件是:姓名=‘…’,应该怎样进行操作,选择条件是:专业= ‘…’呢? 在选择条件是:姓名=‘…’中,结果不会很多,可以使用索引搜索。 在选择条件是:专业=‘…’中,结果会很多,需要使用顺序搜索。 Why? 索引搜索和顺序搜索的特点 4、若选择是属性上的非等值查询或范围查询,并且选择列上有索引,应该如何操作? 同样要根据结果的规模决定使用索引搜索,还是顺序搜索。 5、对于用AND连接的合取选择条件,有索引就用,否则使用顺序搜索。 6、对于用OR连接的选择条件,一般顺序搜索。 二、连接操作的启发式规则: 1、已经对连接的属性排序,采用排序—合并方法。 2、如果一个表在连接属性上有索引,则可以选用索引连接。 3、前2条都行不通,且一个表较小,将较小的表作为外循环的表,进行嵌套循环方法。 本章小结 代数优化的目的是什么? 物理优化的目的是什么? 谁负责进行查询优化? 作业:P275 T2,3,4 第四章 关系查询处理和查询优化 C源程序 语法检查 语句结构分析 生成目标文件 编译 将多个目标文件连接 起来生成可执行程序 运行 计算机系统如何处理SQL语句? 计算机系统如何处理c语言程序? 过程如下: 关系查询处理和查询优化 主要内容: 查询处理步骤 查询的优化 理论基础——代数优化 物理优化——存储和结构 4.1关系数据库系统的查询处理 RDBMS进行查询处理的目的是什么? 提高计算机系统的执行效率——优化。 查询过程如下: 查询语句 词法分析 语法分析 语义分析 符号名转换 检查安全性 和完整性 代数优化 物理优化 生成代码 查询分析 查询检查 查询优化 查询执行 数据库中的 相关信息 从另一个角度描述 查询 语法分析器 与翻译器 关系代数表达式 优化器 执行计划 执行引擎 查询结果 数据 有关数据的统计信息 在实际操作过程中上述过程如何进行? 4.2实现查询操作的分析 RDBMS有哪些基本类型的查询操作? 选择,连接 4.2.1RDBMS应该怎样进行选择操作?例如选择语句 Select * from student where sno=‘94545’ 最简单的方法:搜索全部相应的表,查找符合条件的记录或记录集合。 利用数据结构课程中的知识分析下列算法的特性,适用的情况。 顺序搜索法; 二分搜索法; 散列搜索法。 在一个关系数据库的表中,RDBMS应该如何进行搜索(查询)? 1、简单的搜索: 在没有排序的情况下——顺序搜索; 已经排序了——二分搜索; 如果使用散列存储(或B+树),可不可提高效率,如果可以该如何做? 添加键信息(指向数据存储的位置)。—索引 2、索引搜索法: B+树的结构: 59 97 15 44 59 72 97 10 15 21 37 44 51 59 63 72 85 91 97 root sqt Root和sqt指针的作用是什么,非叶子节点中的数据的作用是什么? 针对某一个数据,可以采取哪几种搜索方法? 利用B+树建立的索引进行搜索比简单的搜索性能如何? 下面选择语句应该如何操作? 1:select * from student where sno‘023231’ 利用B+树的索引功能,在Sno属性上添加索引就可以提高操作效率。 2:select * from student, s_c where student.sno=s_c.sno RDBMS如何实现该操作? 连接 4.2.2RDBMS应该怎样实现连接操作? 法1.涉及到几个表,就用几层嵌套循环——该怎样做? 例如: Select sname from student, s_c where student.sno=s_c.sno for (每个元组ts in student ){ for (每个元组tr in s_c ){ if(每个(ts , tr )对满足条件) 把ts的sname放到结果中; } } 法2.先排序,然后再搜索——该怎样做? 法3.使用索引(建立索引);进行搜索——该怎样做? 问题:连接操作与简单的选择操作,哪个执行速度高? 在一个复杂查询中,用户使用的查询语句一定完全一样吗,若不一样,各种语句的执行速度都一样吗?看下例: Select student.name from student,s_c where student.sno=s_c.sno and s_c.cno=‘2’ 操作方法有如下几种:
文档评论(0)