文档详情

数据库系统概论第四版--9-关系查询处理和查询优化讲解.ppt

发布:2017-03-16约7.74千字共49页下载文档
文本预览下载声明
An Introduction to Database System 一个实例(续) 设一个块能装10个Student元组或100个SC元组,在内存中存放5块Student元组和1块SC元组,则读取总块数为 + =100+20×100=2100块 其中,读Student表100块。读SC表20遍,每遍100块。若每秒读写20块,则总计要花105s 连接后的元组数为103×104=107。设每块能装10个元组,则写出这些块要用106/20=5×104s An Introduction to Database System 一个实例(续) 2. 做选择操作 依次读入连接后的元组,按照选择条件选取满足要求的记录 假定内存处理时间忽略。读取中间文件花费的时间(同写中间文件一样)需5×104s 满足条件的元组假设仅50个,均可放在内存 An Introduction to Database System 一个实例(续) 3. 做投影操作 把第2步的结果在Sname上作投影输出,得到最终结果 第一种情况下执行查询的总时间≈105+2×5×104≈105s 所有内存处理时间均忽略不计 An Introduction to Database System 一个实例(续) 二、 第二种情况 Q2=πSname(σSc.Cno=2 (Student SC)) 1. 计算自然连接 执行自然连接,读取Student和SC表的策略不变,总的读取块数仍为2100块花费105 s 自然连接的结果比第一种情况大大减少,为104个 写出这些元组时间为104/10/20=50s,为第一种情况的千分之一 2. 读取中间文件块,执行选择运算,花费时间也为50s。 3. 把第2步结果投影输出。 第二种情况总的执行时间≈105+50+50≈205s An Introduction to Database System 一个实例(续) 三、 第三种情况 Q3=πSname(Student σSc.Cno=2(SC)) 1. 先对SC表作选择运算,只需读一遍SC表,存取100块花费时间为5s,因为满足条件的元组仅50个,不必使用中间文件。 2. 读取Student表,把读入的Student元组和内存中的SC元组作连接。也只需读一遍Student表共100块,花费时间为5s。 3. 把连接结果投影输出 第三种情况总的执行时间≈5+5≈10s An Introduction to Database System 一个实例(续) 假如SC表的Cno字段上有索引 第一步就不必读取所有的SC元组而只需读取Cno=‘2’的那些元组(50个) 存取的索引块和SC中满足条件的数据块大约总共3~4块 若Student表在Sno上也有索引 第二步也不必读取所有的Student元组 因为满足条件的SC记录仅50个,涉及最多50个Student记录 读取Student表的块数也可大大减少 总的存取时间将进一步减少到数秒 An Introduction to Database System 一个实例(续) 把代数表达式Q1变换为Q2、 Q3, 即有选择和连接操作时,先做选择操作,这样参加连接的元组就可以大大减少,这是代数优化 在Q3中 SC表的选择操作算法有全表扫描和索引扫描2种方法,经过初步估算,索引扫描方法较优 对于Student和SC表的连接,利用Student表上的索引,采用index join代价也较小,这就是物理优化 An Introduction to Database System 第九章 关系系统及其查询优化 9.1 关系数据库系统的查询处理 9.2 关系数据库系统的查询优化 9.3 代数优化 9.4 小 结 An Introduction to Database System 9.3 代 数 优 化 9.3.1 关系代数表达式等价变换规则 9.3.2 查询树的启发式优化 An Introduction to Database System 9.3.1 关系代数表达式等价变换规则 代数优化策略:通过对关系代数表达式的等价变换来提高查询效率 关系代数表达式的等价:指用相同的关系代替两个表达式中相应的关系所得到的结果是相同的 两个关系表达式E1和E2
显示全部
相似文档