- 1、本文档共61页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 60 * 例:设给定的关系R、S如下表: 1 2 3 4 A1 B1 C1 D1 A1 B1 C2 D2 A1 B1 C3 D3 A2 B2 C1 D1 A1 B1 C2 D2 A3 B3 C1 D1 1 2 C1 D1 C2 D2 R S 求R÷σ1=c1(S) 1 2 A1 B1 A2 B2 A3 B3 * 60 * 除法运算同时从行和列的角度进行运算,适合于包含“全部”之类的短语的查询。 例2.12 查询选修了全部课程的学生学号和姓名。 ΠSNO,CNO(SC)÷ΠCNO(C)∞ΠSNO,SN(S) * 60 * 课堂练习: 设有如下的三个关系: Employee(Ename,Stree、City) (职工名、居住街道、居住城市) Work(Ename、Cname、Salary) (职工名、公司名、工资) Company(Cname、City) (公司名、公司所在城市) * 60 * 试用关系代数表示下列查询: 在“华联公司”工作的所有职工的姓名。 在“华联公司”工作的,且工资大于1000元的所有职工的姓名、住址和居住城市。 生活和工作在同一城市的职工姓名。 不在“华联公司”工作的所有职工的姓名。 * 60 * 关系代数表达式的优化介绍 Home 为了提高效率、减少运行时间,可以在查询语言处理程序执行查询操作之前,先由系统对用户的查询语句进行转换,将其转变为一串所需执行时间较少的关系运算,并为这些运算选择较优的存取路径,以便大大地减少执行时间,这就是关系数据库的查询优化。 * 60 * 查询优化的目的是针对一个查询,找出一种既省时间,又省空间,而且效率又比较高的方案。 查询优化一般可分为代数优化和物理优化。 代数优化是指关系代数表达式的优化: 物理优化则是指存取路径和低层操作算法的选择。 * 60 * 查询优化在关系数据库系统中有着非常重要的地位。 关系数据库系统和非过程化的SQL语言能够取得巨大的成功,关键是得益于查询优化技术的发展。 关系查询优化是影响RDBMS性能的关键因素。 * 60 * 一个实例 首先来看一个简单的例子,说明为什么要进行查询优化。 在学生(S)、课程(C)、选课(SC)数据库中求选修了1024号课程的学生姓名 假设在关系学生S中有l000个元组,在关系选课SC中有l0,000个元组,其中选修1024号课程的元组有50个。设一个块能装20个S元组或l00个SC元组,则关系S的大小为1000÷20=50(块),关系SC的大小是10 000÷100=100(块)。并假设系统每秒可以读写10块。 * 60 * 我们可以用以下多种等价的关系代数表达式来完成这一查询: Q1=πSname(?S.Sno=SC.Sno?SC.Cno=1024(S×SC)) Q2=πSname(? Cno= 1024( S∞SC)) Q3=πSname(S∞? Cno=1024(SC)) 还可以写出几种等价的关系代数表达式,但分析这三种就足以说明问题了。后面将看到由于查询执行的策略不同,查询时间相差很大。 * 60 * 1.Q1 πSname(?S.Sno=SC.Sno?SC.Cno=1024(S×SC)) (1)计算广义笛卡儿积 把S和SC的每个元组连接起来。一般连接的做法是:从关系S和关系SC中选择一个占用存储空间小的关系,假设为S,读S的若干块到内存,读SC的一块到内存,在内存中把SC中的每个元组和S中每个元组连接,连接后的元组装满一块后就写到中间文件上,再从SC中读入一块到内存和内存中的SC元组连接,直到SC表处理完。这时再从S中读若干块到内存,然后读入SC的一块元组到内存,重复上述处理过程,直到把S表处理完。 * 60 * 在内存中分配5个块给关系S,1个块给关系SC,则读取总块数为: 读关系SC和关系S的总的块数为:50 +(50÷5)×100=1050(块),需要花费的时间是105 s。 先读入S的50块 对每块S,读取100块SC(每读5块S,就读完一遍SC) 连接后的元组数为l03×104=l07,设每个块能装l0个元组,则中间结果有l07÷10= l06个块,写出这些中间结果要用l06÷10=105 s。 * 60 * (2)作选择操作 依次读入连接后的元组,按照选择条件选取满足要求的记录(遍历所有的元组)。假定内存处理时间忽略。这一步读取中间文件花费的时间(同写中间文件一样)需105 s。满足条件的元组假设仅50个,可放在内存。 (3)作投影 把第2步的结果在Sname上作投影输出,得到最终结果。 因此第一种情况下执行查询的总时间:l0
您可能关注的文档
- 建筑材料4课件幻灯片.ppt
- 基本概念和理论——化学基础知识,建议优先阅读2015届高三第一轮总复习课件第3、4节物质的量、气体摩尔体积、物质的量浓度幻灯片.ppt
- 数据库基础与应用——SQLServer2005第2版教学作者成先海第12章节使用课件幻灯片.ppt
- 数据库基础与应用——SQLServer2005第2版教学作者成先海课程介绍课件幻灯片.ppt
- 数据库实用技术教程教学课件作者基于Oracle系统电子教案第1章幻灯片.ppt
- 基本概念和理论——化学基础知识,建议优先阅读第1讲物质的组成和分类幻灯片.ppt
- 建筑材料5课件幻灯片.ppt
- 数据库实用技术教程教学课件作者基于Oracle系统电子教案第1章节课件幻灯片.ppt
- 基本概念和理论——化学基础知识,建议优先阅读第2讲分散系及胶体幻灯片.ppt
- 基本概念和理论——化学基础知识,建议优先阅读第3讲溶解度幻灯片.ppt
文档评论(0)