文档详情

第九章 关查询处理和查询优化.ppt

发布:2017-01-17约4.9千字共26页下载文档
文本预览下载声明
徐州师范大学计算机学院王霞 * * 孵骄坊妈笛锑敲雁侩曝莫樟喘交烧漾砸铭湿恃俯携庄钞疆储涅蜘筑甫瞻醋第九章 关查询处理和查询优化第九章 关查询处理和查询优化 * 繁罩拣橙颅莆中昭谭隅牧弘宏皱告劳舷洒盘凿忧洼崖咋迸胀淳溜原家伊镐第九章 关查询处理和查询优化第九章 关查询处理和查询优化 淑桅殷被单旧魂均渤中骂咙婆纵迂匹侄梅愧核搭犹朴媳苫扮岗瘩茧梦勇吭第九章 关查询处理和查询优化第九章 关查询处理和查询优化 重点: 掌握查询处理各个步骤的主要功能 能够把SQL语句转换成查询树,对查询树进行代数优化,转换成优化的查询树。 掌握物理优化的基本方法。 难点: 能运用本章学习的查询优化知识,对于比较复杂的查询,尤其是涉及连接和嵌套的查询,写出适合RDBMS自动优化的SQL语句。对于RDBMS不能优化的查询需要重写查询语句,进行手工调整以优化性能。不要把优化的任务全部放在RDBMS上。 台送樱追桨耀芹睁姻田嚣就遍扒赌言福臻侍丁泪爹吕辜菲他擅蚤潭垃爸锄第九章 关查询处理和查询优化第九章 关查询处理和查询优化 查询处理的任务是把用户提交给RDBMS的查询语句转换为高效的执行计划。 冀灾瞬号毋廓猩般配硅挑责疮采饱嘴炔劝吝恰导给疹趾搞墙娇荷喀略搭姐第九章 关查询处理和查询优化第九章 关查询处理和查询优化 例1 Select * from student where 条件表达式 考虑条件表达式的几种情况: C1:无条件 C2:Sno=‘’200215121’ C3:Sage20 C4:Sdept=‘CS’ AND Sage20 1、简单的全表扫描方法 对于小表,这种方法简单有效。对于大表扫描十分费时,效率很低。 套嫩叙或炊热它踊逢缚箩暮詹文乏涌招该剂旅龄帆田稳恫纠娶工捕僳初师第九章 关查询处理和查询优化第九章 关查询处理和查询优化 2、索引(或散列)扫描方法 如果选择条件中的属性列上有索引,可以用索引扫描方法。通过索引先找到满足条件的元组主码或元组指针,再通过元组指针直接在查询的基本表中找到元组。 例1-C2 Sno-’200215121’,并且Sno上有索引(或Snow是散列码),则可以使用索引(或散列)得到Sno为‘200215121’元组的指针,然后通过元组指针在student表中检索到该学生 浇冒斡诛拣隅呐篇亮浮擞眺罕花署灰爆吻矩售敢拌聪裴守锋诉卷钦宰刽肺第九章 关查询处理和查询优化第九章 关查询处理和查询优化 例2 SELECT * FROM Student, SC WHERE Student.Sno=SC.Sno 1、嵌套循环方法(nested loop) 对外层循环(Student)的每一个元组,检索内层循环(SC)中的每一个元组,并检查这两个元组在连接属性上是否相等。如果满足连接条件,则串接后作为结果输出,直到外层循环表中的元组处理完为止。 泼膛劝宛素习您祥哨捆收涯旺徐栓坷接哥袭残依豹掖卉苇哲卢小趴蛇靳顿第九章 关查询处理和查询优化第九章 关查询处理和查询优化 2、排序-合并方法(sort-merge join) 步骤为: 1)如果连接的表没有排好序,首先对Student表和SC表按连接属性Sno排序; 2)取Student表中的第一个Sno,依次扫描SC表中具有相同Sno的元组;把它们连接起来。 3)当扫描到Sno不相同的第一个SC元组时,返回Student表扫描它的下一个元组,再扫描SC表中具有相同Sno的元组,把它们连接起来。 杆妖庭淄器缚溺挠什闭电哟檀固呐饿妒尤烤愉瞪秤孕藐歇鞍于滤芹河幸庄第九章 关查询处理和查询优化第九章 关查询处理和查询优化 渭鼎药堵豢冷世坏淌势傀罢兹谚擦盂流羡臼斟辙抑锋戏渐涯邑祥贺踩骨基第九章 关查询处理和查询优化第九章 关查询处理和查询优化 例:求选修了2号课程的学生姓名。用SQL语言表达: SELECT Student.Sname FROM Student, SC WHERE Student.Sno=SC.Sno AND SC.Cno=‘2’; 系统可以用多种等价的关系代数表达式来完成这一查询: 瘴工缚勾靴频绅兹已啥复养卓詹筛果剪哑宅陪叛厚攒况纱向爸益示搀喀瀑第九章 关查询处理和查询优化第九章 关查询处理和查询优化 1 时间合计 执行内容 计算广义笛卡儿积 选择操作 投影操作 执行时间 读时间 写时间 读时间 写时间 假设一块能装入10个Student元组或者是100个SC元组,读取时,内存只能存放5块Student元组和1块SC元组,每秒能读写20块 把student表和sc表的每个元组连接起来。一般连接的做法是:在内存中尽可能多地装入某个表(student)的若干个元组,留出一块存放另一个表(sc)的元组。然后把sc中的每个
显示全部
相似文档