文档详情

数据库系统实现06.ppt

发布:2017-04-24约4.13千字共21页下载文档
文本预览下载声明
第六章  查询执行;引言; DBMS处理查询计划的过程是这样的: 在做完查询语句的词法、语法检查之后,将语句提交给DBMS的查询优化器,优化器做完代数优化和存取路径的优化之后,由预编译模块对语句进行处理并生成查询规划,然后在合适的时间提交给系统处理执行,最后将执行结果返回给用户。 在实际的数据库产品(如Oracle、Sybase等)的高版本中都是采用基于代价的优化方法,这种优化能根据从系统字典表所得到的信息来估计不同的查询规划的代价,然后选择一个较优的规划。 虽然现在的数据库产品在查询优化方面已经做得越来越好,但由用户提交的SQL语句是系统优化的基础,很难设想一个原本糟糕的查询计划经过系统的优化之后会变得高效,因此用户所写语句的优劣至关重要。 DBMS中的存储统计信息: 有关关系的统计信息 关系R中的元组数目 含有关系R的元组的块数目 关系R中每个元组的字节数 关系R的块因子,即一个块中能存放的关系 统计信息的维护 ?? 每次关系修改时,更新统计信息 ?? 系统处于轻负载时,更新统计信息 ;查询处理的步骤: ;分析: 例:SELECT SNAME FROM S,C,SC WHERE S.SNO=SC.SNO AND C.CNO=SC.CNO AND C.CNAME=‘DATABASE SYSTEM’ S=10000,C=1000,SC=100000 查询方案: 1) ∏ sname(σ S.SNO=SC.SNO AND((sXc)Xsc)) C.CNO=SC.CNO AND C.CNAME=‘DATABASE SYSTEM) 2) ∏ sname(σC.CNAME=‘DATABASE SYSTEM ((s∞c) ∞sc)) 3) ∏ sname( ((s∞ σC.CNAME=‘DATABASE SYSTEM (c)) ∞sc)) ;1.一种基于包的查询代数;1.并,交和差: 基于包的并,交和差的语义: 1)R∪S:一个元组t在结果中出现的次数是在R中出现的次数与S中出      现的次数之和. 2)R∩S:一个元组t在结果中出现的次数是在R中出现的次数与S中出      现的次数之间的最小值. 3)R-S:一个元组t在结果中出现的次数是在R中出现的次数减去S中      现的次数. 例:如果R={A,B,B},S={C,A,B,C}是两个包   那么:   1)R∪S= 2)R∩S= 3)R-S= 考虑:S={C,A,B,B,C}时,   ;2.选择操作符:   σc(R)产生由R中满足条件C的元组构成的包,结果关系的模式与R的模式一样.  例: ;3.投影操作符:  ∏L(R)是R在列表L上的投影,不去掉重复的元组.  L的构成:   1):R的单个属性   2):表达式x?y,其中x,y是属性名字列表,将x换名为y   3):表达式e?z, 例: 4.关系的积(笛卡儿积)   如果R和S是关系,则R×S是一个模式中包含R的属性和S的属性的关系,在结果积中不去掉重复的属性.  例:  ;5.连接操作:∞  1)自然连接R ∞ S  2)等值连接R ∞ S  3)θ连接R ∞ θ S 6.消除重复: δ(R)与distinct 对应,是将包转换为集合的操作符 SQL的UNION,INTERSET,EXCEPT均按集合方式理解,故转为包的表示时,用δ消除重复. 如:R UNION S 可表示为δ(R∪S);7.分组和聚集: 三要素: (1)聚集操作符: 出现在SQL的SELECT中,对属性应用AVG,SUM,COUNT,MIN和MAX,产生 相应的结果. (2)分组: 出现在SQL的SELECT中,以GROUP BY 方式,其主要作用为: 1)对由FROM 和 WHERE 所描述的关系按照GROUP BY 后面的属性 分组 2)将聚集作用到每个分组上 (3)HAVING条件: 给出查询结果中的每个分组所必须满足的条件 符号表示: (1)符号γ表示分组和聚集: γL(R) R是关系 L是元素的列表: a) GROUP BY
显示全部
相似文档