第4章 数据库 优秀PPT.ppt
第第4章章 数据库数据库 课件课件05十二月2022第四章 关系系统及其查询优化1现在学习的是第1页,共70页05十二月2022第四章 关系系统及其查询优化24.1 关系系统关系系统4.1.1 关系系统的定义关系系统的定义4.1.2 关系系统的分类关系系统的分类现在学习的是第2页,共70页05十二月2022第四章 关系系统及其查询优化3关系系统关系系统(续续)n 关系模型关系模型n关系数据结构关系数据结构n域及域上定义的关系域及域上定义的关系n关系操作关系操作n并、交、差、广义笛卡尔积、选择、投影、连接、并、交、差、广义笛卡尔积、选择、投影、连接、除等除等 n关系完整性关系完整性n实体完整性、参照完整性、用户自己定义的完整实体完整性、参照完整性、用户自己定义的完整性性现在学习的是第3页,共70页05十二月2022第四章 关系系统及其查询优化4关系系统关系系统(续续)n关系系统关系系统n能能够够在在一一定定程程度度上上支支持持关关系系模模型型的的数数据据库库管理系统是关系系统。管理系统是关系系统。n由于关系模型中并非每一部分都是同等重由于关系模型中并非每一部分都是同等重要的,所以我们并不苛求一个实际的关系要的,所以我们并不苛求一个实际的关系系统必须完全支持关系模型。系统必须完全支持关系模型。现在学习的是第4页,共70页05十二月2022第四章 关系系统及其查询优化54.1.1 关系系统的定义关系系统的定义n关系系统的定义关系系统的定义n一一个个数数据据库库管管理理系系统统可可定定义义为为关关系系系系统统,当当且且仅当它仅当它至少至少支持:支持:1.关关系系数数据据库库(即即关关系系数数据据结结构构)。也也就就是是说说,从从用用户户观观点点看看,数数据据库库是是由由表表构构成成的的,并并且且系系统统中中只只有有表这种结构。表这种结构。2.支持选择、投影和(自然)连接运算。对这些支持选择、投影和(自然)连接运算。对这些运算不要求用户定义任何物理存取路径。运算不要求用户定义任何物理存取路径。现在学习的是第5页,共70页05十二月2022第四章 关系系统及其查询优化6关系系统的定义关系系统的定义(续)(续)不不支支持持“关关系系”数数据据结结构构的的系系统统显显然然不不能能称称为为关关系系统。系系统。仅仅支支持持关关系系数数据据结结构构,但但没没有有选选择择、投投影影和和连连接接运算功能的系统仍不能算作关系系统。运算功能的系统仍不能算作关系系统。n原因:用户使用起来仍不方便,不能提高用户原因:用户使用起来仍不方便,不能提高用户的生产率,而提高用户生产率正是关系系统的的生产率,而提高用户生产率正是关系系统的主要目标之一。主要目标之一。现在学习的是第6页,共70页05十二月2022第四章 关系系统及其查询优化7关系系统的定义关系系统的定义(续)(续)n支支持持选选择择、投投影影和和连连接接运运算算,但但要要求求定定义义物物理理存存取取路路径径(例例如如要要求求用用户户建建立立索索引引并并打打开开索索引引才才能能按按索索引引字字段段检检索索记记录录),这这种种系系统统也也不不能能算算作作真真正的关系系统正的关系系统n原原因因:依依赖赖于于物物理理存存取取路路径径就就降降低低或或丧丧失失了了数数据的物理独立性据的物理独立性n选选择择、投投影影、连连接接运运算算是是最最有有用用的的运运算算,能能解解决决绝大部分实际问题。绝大部分实际问题。现在学习的是第7页,共70页05十二月2022第四章 关系系统及其查询优化84.1.2 关系系统的分类关系系统的分类 n分类依据分类依据 依据关系系统支持关系模型的程度不同依据关系系统支持关系模型的程度不同n分类分类 表式系统表式系统n仅支持关系数据结构仅支持关系数据结构(即表即表)(最小最小)关系系统关系系统n支持:关系数据结构支持:关系数据结构 选择、投影、连接关系操作选择、投影、连接关系操作 现在学习的是第8页,共70页05十二月2022第四章 关系系统及其查询优化9关系系统的分类关系系统的分类(续)(续)关系完备的系统关系完备的系统n支持:关系数据结构支持:关系数据结构 所有的关系代数操作所有的关系代数操作 全关系系统全关系系统n支持:关系模型的所有特征支持:关系模型的所有特征 特别是特别是:数据结构中域的概念数据结构中域的概念 实体完整性实体完整性 参照完整性参照完整性现在学习的是第9页,共70页05十二月2022第四章 关系系统及其查询优化10关系系统的分类关系系统的分类(续)(续)数据结构数据结构数据操作数据操作完整性完整性表式系统表式系统表表 (最小最小)关系系统关系系统表表选选择择、投投影影、连接连接 关系完备的系统关系完备的系统表表 全关系系统全关系系统 现在学习的是第10页,共70页05十二月2022第四章 关系系统及其查询优化114.1.3 查询处理步骤查询处理步骤nRDBMS查询处理阶段查询处理阶段:1.查询分析查询分析2.查询检查查询检查3.查询优化查询优化 4.查询执行查询执行 现在学习的是第11页,共70页05十二月2022第四章 关系系统及其查询优化12查询处理步骤(续)查询处理步骤(续)现在学习的是第12页,共70页05十二月2022第四章 关系系统及其查询优化131.查询分析查询分析n对查询语句进行扫描、词法分析和语法分析对查询语句进行扫描、词法分析和语法分析 n从查询语句中识别出语言符号从查询语句中识别出语言符号 n进行语法检查和语法分析进行语法检查和语法分析 现在学习的是第13页,共70页05十二月2022第四章 关系系统及其查询优化142.查询检查查询检查n根据数据字典对合法的查询语句进行语义检查根据数据字典对合法的查询语句进行语义检查 n根据数据字典中的用户权限和完整性约束定义对用户的存取权限进根据数据字典中的用户权限和完整性约束定义对用户的存取权限进行检查行检查 n检查通过后把检查通过后把SQL查询语句转换成等价的关系代数表达式查询语句转换成等价的关系代数表达式 nRDBMS一般都用查询树一般都用查询树(语法分析树语法分析树)来表示扩展的关系代数表来表示扩展的关系代数表达式达式 n把数据库对象的外部名称转换为内部表示把数据库对象的外部名称转换为内部表示 现在学习的是第14页,共70页05十二月2022第四章 关系系统及其查询优化153.查询优化查询优化n查询优化:选择一个高效执行的查询处理策略查询优化:选择一个高效执行的查询处理策略 n查询优化分类查询优化分类:n代数优化:指关系代数表达式的优化代数优化:指关系代数表达式的优化n物理优化:指存取路径和底层操作算法的选择物理优化:指存取路径和底层操作算法的选择n查询优化方法选择的依据:查询优化方法选择的依据:n基于规则基于规则(rule based)n基于代价基于代价(cost based)n基于语义基于语义(semantic based)现在学习的是第15页,共70页05十二月2022第四章 关系系统及其查询优化164.查询执行查询执行n依据优化器得到的执行策略生成查询计划依据优化器得到的执行策略生成查询计划n代码生成器代码生成器(code generator)生成执行查询计划的生成执行查询计划的代码代码 现在学习的是第16页,共70页05十二月2022第四章 关系系统及其查询优化174.1.4 实现查询操作的算法示例实现查询操作的算法示例n一、一、选择操作的实现选择操作的实现 n二、二、连接操作的实现连接操作的实现 现在学习的是第17页,共70页05十二月2022第四章 关系系统及其查询优化18一、一、选择操作的实现选择操作的实现n例例 Select*from student where ;考虑考虑的几种情况:的几种情况:C1:无条件;:无条件;C2:Sno200215121;C3:Sage20;C4:SdeptCS AND Sage20;现在学习的是第18页,共70页05十二月2022第四章 关系系统及其查询优化19选择操作的实现(续)选择操作的实现(续)n选择操作典型实现方法:选择操作典型实现方法:n1.简单的全表扫描方法简单的全表扫描方法 n对查询的基本表顺序扫描,逐一检查每个元组是否满足选择条件,把满足条件对查询的基本表顺序扫描,逐一检查每个元组是否满足选择条件,把满足条件的元组作为结果输出的元组作为结果输出 n适合小表,不适合大表适合小表,不适合大表n2.索引扫描方法索引扫描方法 适合选择条件中的属性上有索引适合选择条件中的属性上有索引(例如例如B+树索引或树索引或Hash索引索引)通过索引先找到满足条件的元组主码或元组指针,再通过元组指针直接在查询通过索引先找到满足条件的元组主码或元组指针,再通过元组指针直接在查询的基本表中找到元组的基本表中找到元组 现在学习的是第19页,共70页05十二月2022第四章 关系系统及其查询优化20选择操作的实现(续)选择操作的实现(续)n例例-C2 以以C2为例,为例,Sno200215121,并且,并且Sno上有索上有索引引 使用索引得到使用索引得到Sno为为200215121 元组的指针元组的指针n通过元组指针在通过元组指针在student表中检索到该学生表中检索到该学生n例例-C3 以以C3为例,为例,Sage20,并且,并且Sage 上有上有B+树索引树索引n使用使用B+树索引找到树索引找到Sage20的索引项,以此为入口点在的索引项,以此为入口点在B+树的顺序集上得到树的顺序集上得到Sage20的所有元组指针的所有元组指针n通过这些元组指针到通过这些元组指针到student表中检索到所有年龄大于表中检索到所有年龄大于20的学生。的学生。现在学习的是第20页,共70页05十二月2022第四章 关系系统及其查询优化21选择操作的实现(续)选择操作的实现(续)n例例-C4 以以C4为例,为例,SdeptCS AND Sage20,如果,如果Sdept和和Sage上都有索引:上都有索引:n算法一:分别用上面两种方法分别找到算法一:分别用上面两种方法分别找到SdeptCS的一组元组指针的一组元组指针和和Sage20的另一组元组指针的另一组元组指针求这求这2组指针的交集组指针的交集到到student表中检索表中检索得到计算机系年龄大于得到计算机系年龄大于20的学生的学生n算法二:找到算法二:找到SdeptCS的一组元组指针,的一组元组指针,通过这些元组指针到通过这些元组指针到student表中检索表中检索对得到的元组检查另一些选择条件对得到的元组检查另一些选择条件(如如Sage20)是否满足是否满足把满足条件的元组作为结果输出。把满足条件的元组作为结果输出。现在学习的是第21页,共70页05十二月2022第四章 关系系统及其查询优化22二、二、连接操作的实现连接操作的实现n连接操作是查询处理中最耗时的操作之一连接操作是查询处理中最耗时的操作之一 n本节只讨论等值连接本节只讨论等值连接(或自然连接或自然连接)最常用的实现最常用的实现算法算法 n例例 SELECT*FROM Student,SC WHERE Student.Sno=SC.Sno;现在学习的是第22页,共70页05十二月2022第四章 关系系统及其查询优化23连接操作的实现(续)连接操作的实现(续)n1.嵌套循环方法嵌套循环方法(nested loop)n2.排序排序-合并方法合并方法(sort-merge join 或或merge join)n3.索引连接索引连接(index join)方法方法 现在学习的是第23页,共70页05十二月2022第四章 关系系统及其查询优化24连接操作的实现(续)连接操作的实现(续)1.嵌套循环方法嵌套循环方法(nested loop)n对外层循环对外层循环(Student)的每一个元组的每一个元组(s),检索,检索内层循环内层循环(SC)中的每一个元组中的每一个元组(sc)n检查这两个元组在连接属性检查这两个元组在连接属性(sno)上是否相等上是否相等n如果满足连接条件,则串接后作为结果输出,如果满足连接条件,则串接后作为结果输出,直到外层循环表中的元组处理完为止直到外层循环表中的元组处理完为止 现在学习的是第24页,共70页05十二月2022第四章 关系系统及其查询优化25连接操作的实现(续)连接操作的实现(续)2.排序排序-合并方法合并方法(sort-merge join 或或merge join)n适合连接的诸表已经排好序的情况适合连接的诸表已经排好序的情况 n排序合并连接方法的步骤:排序合并连接方法的步骤:如果连接的表没有排好序,先对如果连接的表没有排好序,先对Student表和表和SC表按表按连接属性连接属性Sno排序排序 取取Student表中第一个表中第一个Sno,依次扫描,依次扫描SC表中具有相表中具有相同同Sno的元组的元组 现在学习的是第25页,共70页05十二月2022第四章 关系系统及其查询优化26连接操作的实现(续)连接操作的实现(续)200215121200215122200215123200215124.200215121 1 92200215121 2 85200215121 3 88200215122 2 90200215122 3 80.排序-合并连接方法示意图现在学习的是第26页,共70页05十二月2022第四章 关系系统及其查询优化27连接操作的实现(续)连接操作的实现(续)n排序合并连接方法的步骤(续):排序合并连接方法的步骤(续):当扫描到当扫描到Sno不相同的第一个不相同的第一个SC元组时,返回元组时,返回Student表扫描它的下一个元组,再扫描表扫描它的下一个元组,再扫描SC表中具有表中具有相同相同Sno的元组,把它们连接起来的元组,把它们连接起来 重复上述步骤直到重复上述步骤直到Student 表扫描完表扫描完现在学习的是第27页,共70页05十二月2022第四章 关系系统及其查询优化28连接操作的实现(续)连接操作的实现(续)nStudent表和表和SC表都只要扫描一遍表都只要扫描一遍n如果如果2个表原来无序,执行时间要加上对两个表的个表原来无序,执行时间要加上对两个表的排序时间排序时间n对于对于2个大表,先排序后使用个大表,先排序后使用sort-merge join方法方法执行连接,总的时间一般仍会大大减少执行连接,总的时间一般仍会大大减少 现在学习的是第28页,共70页05十二月2022第四章 关系系统及其查询优化29连接操作的实现(续)连接操作的实现(续)3.索引连接索引连接(index join)方法方法n步骤:步骤:在在SC表上建立属性表上建立属性Sno的索引,如果原来没有该索引的索引,如果原来没有该索引 对对Student中每一个元组,由中每一个元组,由Sno值通过值通过SC的索引查找相应的索引查找相应的的SC元组元组 把这些把这些SC元组和元组和Student元组连接起来元组连接起来 循环执行循环执行,直到,直到Student表中的元组处理完为止表中的元组处理完为止 现在学习的是第29页,共70页05十二月2022第四章 关系系统及其查询优化304.2 关系系统的查询优化关系系统的查询优化 4.2.1 查询优化概述查询优化概述4.2.2 查询优化的必要性查询优化的必要性4.2.3 查询优化的一般准则查询优化的一般准则4.2.4 关系代数等价变换规则关系代数等价变换规则4.2.5 关系代数表达式的优化算法关系代数表达式的优化算法4.2.6 优化的一般步骤优化的一般步骤 现在学习的是第30页,共70页05十二月2022第四章 关系系统及其查询优化314.2.1 查询优化概述查询优化概述n查询优化的必要性查询优化的必要性n查询优化极大地影响查询优化极大地影响RDBMS的性能。的性能。n查询优化的可能性查询优化的可能性n关系数据语言的级别很高,使关系数据语言的级别很高,使DBMS可以从关可以从关系表达式中分析查询语义。系表达式中分析查询语义。现在学习的是第31页,共70页05十二月2022第四章 关系系统及其查询优化32查询优化概述(续)查询优化概述(续)n由由DBMS进行查询优化的好处进行查询优化的好处n用用户户不不必必考考虑虑如如何何最最好好地地表表达达查查询询以以获获得得较较好好的效率的效率n系统可以比用户程序的系统可以比用户程序的“优化优化”做得更好做得更好 (1)优化器可以从数据字典中获取许多统计信息,优化器可以从数据字典中获取许多统计信息,例如关系中的元组数、关系中每个属性值的分布情例如关系中的元组数、关系中每个属性值的分布情况等。优化器可以根据这些信息选择有效的执行计况等。优化器可以根据这些信息选择有效的执行计划,而用户程序则难以获得这些信息。划,而用户程序则难以获得这些信息。现在学习的是第32页,共70页05十二月2022第四章 关系系统及其查询优化33查询优化概述(续)查询优化概述(续)(2)如如果果数数据据库库的的物物理理统统计计信信息息改改变变了了,系系统统可可以以自自动动对对查查询询进进行行重重新新优优化化以以选选择择相相适适应应的的执执行行计计划划。在在非非关关系系系系统统中中必必须须重重写写程程序序,而重写程序在实际应用中往往是不太可能的。而重写程序在实际应用中往往是不太可能的。(3)优优化化器器可可以以考考虑虑数数百百种种不不同同的的执执行行计计划划,而而程程序序员员一一般般只只能能考考虑有限的几种可能性。虑有限的几种可能性。(4)优优化化器器中中包包括括了了很很多多复复杂杂的的优优化化技技术术,这这些些优优化化技技术术往往往往只只有有最最好好的的程程序序员员才才能能掌掌握握。系系统统的的自自动动优优化化相相当当于于使使得所有人都拥有这些优化技术。得所有人都拥有这些优化技术。现在学习的是第33页,共70页05十二月2022第四章 关系系统及其查询优化34查询优化概述(续)查询优化概述(续)n查查询询优优化化:DBMS在在做做查查询询处处理理时时根根据据查查询询的的具具体体要求选择合理的有效的执行策略的过程。要求选择合理的有效的执行策略的过程。n查询优化的总目标查询优化的总目标n选择有效策略,求得给定关系表达式的值选择有效策略,求得给定关系表达式的值现在学习的是第34页,共70页05十二月2022第四章 关系系统及其查询优化35查询优化概述(续)查询优化概述(续)n 常用查询优化技术常用查询优化技术n仅对查询语句进行变换(仅对查询语句进行变换(代数优化代数优化)n对存取路径的优化(对存取路径的优化(物理优化物理优化)n用启发式规则来缩减查询计划的搜索空间(用启发式规则来缩减查询计划的搜索空间(规则优化规则优化)n利用统计信息估算执行代价(利用统计信息估算执行代价(代价优化代价优化)现在学习的是第35页,共70页05十二月2022第四章 关系系统及其查询优化36查询优化概述(续)查询优化概述(续)n代价模型代价模型n集中式数据库集中式数据库n单用户系统单用户系统总代价总代价=I/O代价代价+CPU代价代价n多用户系统多用户系统总代价总代价=I/O代价代价+CPU代价代价+内存代价内存代价n分布式数据库分布式数据库总代价总代价=I/O代价代价+CPU代价代价 +内存代价内存代价+通信代价通信代价 现在学习的是第36页,共70页05十二月2022第四章 关系系统及其查询优化374.2.2 查询优化的必要性查询优化的必要性 例:求选修了例:求选修了2号课程的学生姓名号课程的学生姓名SELECT Student.SnameFROM Student,SCWHERE Student.Sno=SC.SnoAND SC.Cno=2;假设假设1:外存:外存:Student表中有表中有1000条学生记录条学生记录SC表中有表中有10000条选课记录条选课记录 其中选修其中选修2号课程的选课记录为号课程的选课记录为50条条现在学习的是第37页,共70页05十二月2022第四章 关系系统及其查询优化38查询优化的必要性(续)查询优化的必要性(续)假设假设2:内存:内存:一个内存块可以装一个内存块可以装10个个Student元组或元组或100个个SC元组元组一个内存块可以装一个内存块可以装10个个Student和和SC的连接结果元组的连接结果元组内存中一次可以存放内存中一次可以存放 5块块Student元组、元组、1块块SC元组和元组和 若干块连接结果元组若干块连接结果元组 假设假设3:读写速度:读写速度:20块块/秒秒假设假设4:连接方法:基于数据块的嵌套循环法连接方法:基于数据块的嵌套循环法不同的执行策略,查询时间相差很大。不同的执行策略,查询时间相差很大。主要考虑主要考虑I/O时间。时间。现在学习的是第38页,共70页05十二月2022第四章 关系系统及其查询优化39查询优化的必要性(续)查询优化的必要性(续)1.1 name(Student.Sno=SC.Sno SC.Cno=2(StudentSC)StudentSC读取总块数读取总块数=读读Student表块数表块数+读读SC表遍数表遍数*每遍块数每遍块数=1000/10+(1000/(105)(10000/100)=100+20100=2100读数据时间读数据时间=2100/20=105秒秒中间结果大小中间结果大小=1000*10000=107 (1千万条元组千万条元组)写中间结果时间写中间结果时间=10000000/10/20=50000秒秒现在学习的是第39页,共70页05十二月2022第四章 关系系统及其查询优化40查询优化的必要性(续)查询优化的必要性(续)读数据时间读数据时间=50000秒秒可以在内存进行可以在内存进行总时间总时间=1055000050000=100105秒秒 =27.8小时小时现在学习的是第40页,共70页05十二月2022第四章 关系系统及其查询优化41查询优化的必要性(续)查询优化的必要性(续)2.2 Sname(SC.Cno=2(Student SC)读取总块数读取总块数=2100块块读数据时间读数据时间=2100/20=105秒秒中间结果大小中间结果大小=10000 (减少(减少1000倍)倍)写中间结果时间写中间结果时间=10000/10/20=50秒秒读数据时间读数据时间=50秒秒可以在内存进行可以在内存进行总时间总时间(1055050)秒秒205秒秒=3.4分分现在学习的是第41页,共70页05十二月2022第四章 关系系统及其查询优化42查询优化的必要性(续)查询优化的必要性(续)3.2 Sname(Student SC.Cno=2(SC)读读SC表总块数表总块数=10000/100=100块块读数据时间读数据时间=100/20=5秒秒中间结果大小中间结果大小=50条条 不必写入外存不必写入外存读读Student表总块数表总块数=1000/10=100块块读数据时间读数据时间=100/20=5秒秒 可以在内存进行可以在内存进行总时间总时间55秒秒10秒秒 现在学习的是第42页,共70页05十二月2022第四章 关系系统及其查询优化43查询优化的必要性(续)查询优化的必要性(续)4.2 name(Student SC.Cno=2(SC)假设假设SC表在表在Cno上有索引,上有索引,Student表在表在Sno上有索引上有索引 读读SC表索引表索引=读读SC表总块数表总块数=50/1001块块读数据时间读数据时间中间结果大小中间结果大小=50条条 不必写入外存不必写入外存 读读Student表索引表索引=读读Student表总块数表总块数=50/10=5块块读数据时间读数据时间 总时间总时间10秒秒现在学习的是第43页,共70页05十二月2022第四章 关系系统及其查询优化444.2.3 查询优化的查询优化的一般准则一般准则 n选择运算应尽可能先做选择运算应尽可能先做 目的:减小中间关系目的:减小中间关系n在执行连接操作前对关系适当进行预处理在执行连接操作前对关系适当进行预处理n按连接属性排序按连接属性排序n在连接属性上建立索引在连接属性上建立索引n投影运算和选择运算同时做投影运算和选择运算同时做n目的:避免重复扫描关系目的:避免重复扫描关系n将投影运算与其前面或后面的双目运算结合将投影运算与其前面或后面的双目运算结合n目的:减少扫描关系的遍数目的:减少扫描关系的遍数现在学习的是第44页,共70页05十二月2022第四章 关系系统及其查询优化45查询优化的一般准则查询优化的一般准则(续)(续)n某些选择运算在其前面执行的笛卡尔积某些选择运算在其前面执行的笛卡尔积 连接运算连接运算 例:例:Student.Sno=SC.Sno (StudentSC)Student SCn提取公共子表达式提取公共子表达式现在学习的是第45页,共70页05十二月2022第四章 关系系统及其查询优化464.2.4 关系代数等价变换规则关系代数等价变换规则 n关系代数表达式等价关系代数表达式等价n指指用用相相同同的的关关系系代代替替两两个个表表达达式式中中相相应应的的关关系系所所得得到到的的结结果果是是相相同的同的n上面的优化策略大部分都涉及到代数表达式的变换上面的优化策略大部分都涉及到代数表达式的变换现在学习的是第46页,共70页05十二月2022第四章 关系系统及其查询优化47关系代数等价变换规则关系代数等价变换规则(续)(续)n常用的等价变换规则常用的等价变换规则设设E1、E2等是关系代数表达式,等是关系代数表达式,F是条件表达式是条件表达式l.连接、笛卡尔积交换律连接、笛卡尔积交换律E1 E2 E2E1E1 E2E2 E1 E1 E2E2 E1 F F2.连接、笛卡尔积的结合律连接、笛卡尔积的结合律 (E1E2)E3 E1 (E2E3)(E1 E2)E3 E1 (E2 E3)(E1 E2)E3 E1(E2 E3)F F F F现在学习的是第47页,共70页05十二月2022第四章 关系系统及其查询优化48关系代数等价变换规则(续)关系代数等价变换规则(续)3.投影的串接定律投影的串接定律 A1,A2,An(B1,B2,Bm(E)A1,A2,An(E)假设:假设:1)E是关系代数表达式是关系代数表达式2)Ai(i=1,2,n),Bj(j=l,2,m)是属性名是属性名3)A1,A2,An构成构成Bl,B2,Bm的的子集子集 4.选择的串接定律选择的串接定律F1F2(E)F1 F2(E)n选择的串接律说明选择条件可以合并选择的串接律说明选择条件可以合并n这样一次就可检查全部条件。这样一次就可检查全部条件。现在学习的是第48页,共70页05十二月2022第四章 关系系统及其查询优化49关系代数等价变换规则(续)关系代数等价变换规则(续)5.选择与投影的交换律选择与投影的交换律(1)假设假设:选择条件选择条件F只涉及属性只涉及属性A1,An F(A1,A2,An(E)A1,A2,An(F(E)(2)假设假设:F中有不属于中有不属于A1,An的属性的属性B1,Bm A1,A2,An(F(E)A1,A2,An(F(A1,A2,An,B1,B2,Bm(E)现在学习的是第49页,共70页05十二月2022第四章 关系系统及其查询优化50关系代数等价变换规则(续)关系代数等价变换规则(续)6.选择与笛卡尔积的交换律选择与笛卡尔积的交换律(1)假设假设:F中涉及的属性都是中涉及的属性都是E1中的属性中的属性 F(E1E2)F(E1)E2(2)假设:假设:F=F1F2,并且,并且F1只涉及只涉及E1中的属性,中的属性,F2只涉及只涉及E2中的属性中的属性 则由上面的等价变换规则则由上面的等价变换规则1,4,6可推出:可推出:F(E1E2)F1(E1)F2(E2)(3)假设:假设:F=F1F2,F1只涉及只涉及E1中的属性,中的属性,F2涉及涉及E1和和E2两者的属性两者的属性 F(E1E2)F2(F1(E1)E2)它使部分选择在笛卡尔积前先做它使部分选择在笛卡尔积前先做现在学习的是第50页,共70页05十二月2022第四章 关系系统及其查询优化51关系代数等价变换规则(续)关系代数等价变换规则(续)7.选择与并的交换选择与并的交换假设:假设:E=E1E2,E1,E2有相同的属性名有相同的属性名F(E1E2)F(E1)F(E2)8.选择与差运算的交换选择与差运算的交换假设:假设:E1与与E2有相同的属性名有相同的属性名F(E1-E2)F(E1)-F(E2)现在学习的是第51页,共70页05十二月2022第四章 关系系统及其查询优化52关系代数等价变换规则(续)关系代数等价变换规则(续)9.投影与笛卡尔积的交换投影与笛卡尔积的交换假设:假设:E1和和E2是两个关系表达式,是两个关系表达式,A1,An是是E1的属性,的属性,B1,Bm是是E2的属性的属性 A1,A2,An,B1,B2,Bm(E1E2)A1,A2,An(E1)B1,B2,Bm(E2)l0.投影与并的交换投影与并的交换假设:假设:E1和和E2 有相同的属性名有相同的属性名 A1,A2,An(E1E2)A1,A2,An(E1)A1,A2,An(E2)现在学习的是第52页,共70页05十二月2022第四章 关系系统及其查询优化53小结小结1-2:连接、笛卡尔积的交换律、结合律连接、笛卡尔积的交换律、结合律3:合并或分解投影运算合并或分解投影运算4:合并或分解选择运算合并或分解选择运算5-8:选择运算与其他运算交换选择运算与其他运算交换5,9,10:投影运算与其他运算交换投影运算与其他运算交换 现在学习的是第53页,共70页05十二月2022第四章 关系系统及其查询优化54关系代数的优化规则关系代数的优化规则n尽可能早做选择操作尽可能早做选择操作n把某些选择同在它前面要执行的笛卡儿积结合起把某些选择同在它前面要执行的笛卡儿积结合起来成为一个来成为一个连接连接运算。运算。n把投影运算和选择运算同时进行把投影运算和选择运算同时进行n把投影同其前或其后的双目运算结合起来把投影同其前或其后的双目运算结合起来n找出公共子表达式找出公共子表达式现在学习的是第54页,共70页05十二月2022第四章 关系系统及其查询优化554.2.5 关系代数表达式的优化算法关系代数表达式的优化算法 1 分解选择运算分解选择运算2 通过交换选择运算,将其尽可能移到叶端通过交换选择运算,将其尽可能移到叶端3 通过交换投影运算,将其尽可能移到叶端通过交换投影运算,将其尽可能移到叶端4合并串接的选择和投影,以便能同时执行合并串接的选择和投影,以便能同时执行 或在一次扫描中完成或在一次扫描中完成5 对内结点分组对内结点分组6 生成程序生成程序 现在学习的是第55页,共70页05十二月2022第四章 关系系统及其查询优化56关系代数表达式的优化算法关系代数表达式的优化算法(续续)算法:关系表达式的优化算法:关系表达式的优化输入:一个关系表达式的语法树。输入:一个关系表达式的语法树。输出:计算该表达式的程序。输出:计算该表达式的程序。方法:方法:(1)分解选择运算。)分解选择运算。利用规则利用规则4把形如把形如F1 F2 Fn(E)变换为变换为 F1(F2(Fn(E)(2)通过交换选择运算,将其尽可能移到叶端)通过交换选择运算,将其尽可能移到叶端 对每一个选择,利用规则对每一个选择,利用规则48尽可能把它移到树的叶端尽可能把它移到树的叶端现在学习的是第56页,共70页05十二月2022第四章 关系系统及其查询优化57关系代数表达式的优化算法关系代数表达式的优化算法(续续)(3)通过交换投影运算,将其尽可能移到叶端)通过交换投影运算,将其尽可能移到叶端对对每每一一个个投投影影利利用用规规则则3,9,l0,5中中的的一一般般形形式式尽尽可可能能把把它它移向树的叶端。移向树的叶端。(4)合并串接的选择和投影,以便能同时执行或在一次扫描中完成)合并串接的选择和投影,以便能同时执行或在一次扫描中完成n利利用用规规则则35把把选选择择和和投投影影的的串串接接合合并并成成单单个个选选择择、单单个个投投影影或或一个选择后跟一个投影。一个选择后跟一个投影。n使多个选择或投影能同时执行使多个选择或投影能同时执行,或在一次扫描中全部完成或在一次扫描中全部完成n尽尽管管这这种种变变换换似似乎乎违违背背“投投影影尽尽可可能能早早做做”的的原原则则,但但这这样样做做效率更高。效率更高。现在学习的是第57页,共70页05十二月2022第四章 关系系统及其查询优化58关系代数表达式的优化算法关系代数表达式的优化算法(续续)(5)对内结点分组)对内结点分组n把上述得到的语法树的内节点分组。把上述得到的语法树的内节点分组。n每每一一双双目目运运算算(,-)和和它它所所有有的的直直接接祖祖先先为为一一组组(这这些些直直接接祖祖先先是是,运运算算)。如如果果其其后后代代直直到到叶叶子子全全是是单单目目运运算算,则则也也将将它它们们并并入入该该组组,但但当当双双目目运运算算是是笛笛卡卡尔尔积积(),而而且且其其后后的的选选择择不不能能与与它它结结合合为为等等值值连连接接时时除除外外。把把这这些些单单目目运运算算单单独独分分为为一组一组现在学习的是第58页,共70页05十二月2022第四章 关系系统及其查询优化59关系代数表达式的优化算法关系代数表达式的优化算法(续续)(6)生成程序)生成程序n生生成成一一个个程程序序,每每组组结结点点的的计计算算是是程程序序中中的的一一步。步。n各各步步的的顺顺序序是是任任意意的的,只只要要保保证证任任何何一一组组的的计计算不会在它的后代组之前计算算不会在它的后代组之前计算。现在学习的是第59页,共70页05十二月2022第四章 关系系统及其查询优化604.2.6 优化的一般步骤优化的一般步骤 1把查询转换成某种内部表示把查询转换成某种内部表示2代数优化:把语法树转换成标准(优化)代数优化:把语法树转换成标准(优化)形式形式3物理优化:选择低层的存取路径物理优化:选择低层的存取路径4生成查询计划,选择代价最小的生成查询计划,选择代价最小的 现在学习的是第60页,共70页05十二月2022第四章 关系系统及其查询优化61优化的一般步骤优化的一般步骤(续续)例:求选修了例:求选修了2号课程的学生姓名号课程的学生姓名SELECT Student.SnameFROM Student,SCWHERE Student.Sno=SC.SnoAND SC.Cno=2;(1)把查询转换成某种内部表示)把查询转换成某种内部表示现在学习的是第61页,共70页05十二月2022第四章 关系系统及其查询优化62优化的一般步骤优化的一般步骤(续续)语法树语法树 结果结果project(Sname)select(SC.Cno=2)join(Student.Sno=SC.Sno)StudentSC现在学习的是第62页,共70页05十二月2022第四章 关系系统及其查询优化63优化的一般步骤优化的一般步骤(续续)关系代数语法树关系代数语法树 Sname SC.Cno=2 Student.Sno=SC.Sno StudentSC现在学习的是第63页,共70页05十二月2022第四章 关系系统及其查询优化64优化的一般步骤优化的一般步骤(续续)(2)代代数数优优化化:利利用用优优化化算算法法,把把语语法法树树转转换换成成标标准准(优优化)形式化)形式Sname Student.Sno=SC.Sno SC.Cno=2 StudentSC现在学习的是第64页,共70页05十二月2022第四章 关系系统及其查询优化65Sname SC.Cno=2 sno,SnameStudentSCsno现在学习的是第65页,共70页05十二月2022第四章 关系系统及其查询优化66优化的一般步骤优化的一般步骤(续续)(3)物理优化:选择低层的存取路径)物理优化:选择低层的存取路径n优化器查找数据字典获得当前数据库状态信息优化器查找数据字典获得当前数据库状态信息n选择字段上是否有索引选择字段上是否有索引