第九章 关系系统及其查询优化
第九章 关系查询处理和查询优化
精品课件!
精品课件!
关系系统的查询优化:
优化:
Sname Sname
Sname Sname
c
c’
c’’
Sname
c
p
SP P S
p
...
索引连接(在SC 的连接列Sno上 建立索引):
95004… 95002... 95003... 95001… ...
...
关系系统的查询优化:
把投影运算和选择运算同时进行 sno (cno=‘2’(SC)) 把投影和其前或后的双目运算结合起来 Cname(Course SC)
把某些选择同在它前面要执行的笛卡尔积 结合起来成为一个连接运算 Students.Sno=SC.Sno and Cno=‘2’(StudentsSC) 找出公共子表达式
Students 95004… 95002... 95003... 95001… ...
...
95003 1 … 95003 2 … 95004 2 ... 95004 3 ... 95001 1 … ...
关系系统的查询优化:
排序合并连接(连 接的关系分别排 序): Students 95001… 95002... 95003... 95004… ... Students SC 95001 1 … 95003 1 … 95003 2 … 95004 2 ... 95004 3 ... ... SC索引 95001 95003 95003 95004 95004 ... SC 95003 1 … 95003 2 … 95004 2 ... 95004 3 ... 95001 1 … ...
23页
关系系统的查询优化:
数据库原理九
关系查询优化的总目标是:选择有效的策略,求得给定 关系表达式的值。 查询优化一般的实现步骤: 1. 将查询转换为某种内部表示,通常是语法树。 2. 根据一定的等价变换规则把语法树转换成标准优化形 式。 3. 选择底层的操作算法。 4. 生成查询计划。 查询计划也称为查询执行方案,是由一系列的内部操 作组成的。这些内部操作按一定的次序构成查询的一个执 行方案。通常这样的方案有多个,需要对每个方案计算执 行代价,选择代价最小的一个。在集中式数据库中,代价 主要考虑磁盘读写的I/O次数,也有一些考虑CPU的处理时 主要考虑磁盘读写的I/O次数,也有一些考虑CPU的处理时 间。
9.2 关系数据库系统的查询优化
查询优化在数据库系统中有着非常重要的地位。关系 数据库系统和非过程化的SQL语言能够取得巨大的成功,关 数据库系统和非过程化的SQL语言能够取得巨大的成功,关 键得益于查询优化技术的发展。关系查询优化是影响关系数 据库管理系统性能的关键。 优化对于关系系统来说既是挑战,又是机遇。挑战是指 为了达到用户接受的性能必须进行查询优化。机遇是指关系 系统可以从关系表达中分析查询语义,提供了执行查询优化 的可能性。这就为关系系统在性能上接近甚至超过非关系系 统提供了机遇。
π
A1, A2, …, An
(πB1, B2, …, Bm(E)) ==
π
A1, A2, …, An
(E)
4. 选择的串接定律
σF1(σF2(E )) == σF1^F2(E)
5. 投影与选择的交换律
σF(πA1, A2, …, An(E)) == πA1, A2, …, An(σF(E))
如果F中有不属于A1,A2, An的属性B1,B2, 如果F中有不属于A1,A2,… An的属性B1,B2,… ,Bm,则有: Bm,则有: (σF(E)) == πA1, A2, …, An(σF(πA1, A2, …, An, B1, B2, …, Bm(E))) 6. 选择与笛卡尔积的交换律 如果F中的属性都是E1中的属性。 如果F中的属性都是E1中的属性。 σF(E1 × E2) == σF(E1) × E2 如果F 如果F = F1 ^ F2,F1只涉及E1中的属性,F2只涉及 F2,F1只涉及E1中的属性,F2只涉及 E2中的属性,则: E2中的属性,则:
第九章关系查询处理和查询优化
sc student 查询树
cno ' 2 '
sc
基于启发式规则的查询物理优化
1、选择操作的启发式规则 • 对于小关系使用全表顺序扫描,即使有索引; • 对于选择条件为主码的等值查询,选择主码索引检索; • 对于选择条件为非主码的值比较查询,并且选择列上有索引,则要估算结 果的元组数目,若数目较少,则在索引上检索,否则在全表上检索; • 对于用and连接的查询条件,若有涉及属性的组合索引,则优先采用组合索 引检索;若只是某些属性上有索引,可采用选择操作的三种实现方法之一 进行,否则采用全表检索; • 对于用or连接的查询条件,一般使用全表顺序扫描。 2、连接操作的启发式规则 • 若两个表都已按连接属性排序,则选用排序合并法; • 若一个表在连接属性上有索引,则可选用索引连接法; • 若上面2条都不适用,其中一个表较小,则可选用散列法; • 最后可选用嵌套循环法,并选择较小的表作为外层。
索引统计信息
作用:SQL Server允许创建有关列中值分布情况统计信息。查询优化器使用这 些统计信息并通过估计使用索引评估查询的开销来确定最佳查询计划。 知识要点: • CREATE STATISTICS语句可用于手工创建统计信息; • 创建统计信息后,数据库引擎对列值进行排序; • 根据这些列值(最多200个,按间隔分隔开)创建一个“直方图”; • 直方图指定有多少行精确匹配每个间隔值,有多少行在间隔范围内,以及 间隔中值的密度大小或重复值的发生率; • 对字符类型的列创建“字符串摘要”信息,使LIKE条件可以更准确地估计 结果集大小,并不断优化查询计划; • 如果列样本摘要的大小超过了数据库引擎可以维护的范围,则不对字符串 摘要信息进行维护; • 创建索引时,查询优化器自动存储有关索引列的统计信息。另外,当数据 库AUTO_CREATE_STATISTICS选项设臵为ON(默认值)时,数据库引 擎自动为没有索引的列创建统计信息。
关系系统及其查询优化重点
第9章关系系统及其查询优化【课时安排】9.1关系系统0.5学时9.2关系数据库系统的查询优化 1.5学时【掌握内容】1. 在学会用SQL语言对数据库进行查询的基础上,了解数据库系统是如何对查询进行优化的。
2. 深入理解查询优化策略;掌握用关系代数等价变换规则对关系代数查询表达式进行优化的方法;学会按查询优化的步骤对查询进行优化。
【难点内容】查询优化过程【教学内容】9.1关系系统1.关系系统的定义当一个系统满足以下两条要求时,它就是一个关系系统:(1) 支持关系数据结构。
(2) 支持关系代数中选择、投影和(自然)连接运算,并且不能要求用户定义任何物理存取路径。
2.关系系统的分类:表式系统、(最小)关系系统、关系完备的系统和全关系系统。
9.2关系数据库系统的查询优化1.关系系统的查询优化是RDBMS的关键技术,步骤:(1) 把查询转换成内部表示形式,一般是语法树。
(2) 选择合适的等价变换规则,把语法树转换成优化形式。
(3) 选择低层的操作算法。
根据存取路径、数据的存储分布情况等,为语法树中的每个操作选择合适的操作算法。
(4) 生成查询执行方案。
2.举例。
对于下列SQL语句SELECT SnameFROM Student,SCWHERE Student.Sno=SC.Sno AND o=‘2’;有三种不同的关系代数操作:Q1=πSname( σStudent.Sno=SC.Sno ∧o=‘2’(Student×SC))Q2= πSname(σo=‘2’(Student SC))Q3= πSname (Student σo=‘2’(SC))在数据量相同时,它们的响应时间差异是巨大的,由此说明查询优化的必要性。
3.查询优化的一般准则(1)尽可能早地执行选择操作。
(2)在一些使用频率较高的属性上,建立索引或分类排序,这可大大提高存取效率。
(3)同一关系的投影运算和选择运算同时进行。
(4)把选择同选择前面的笛卡尔积结合起来成为一个连接运算。
第九章关系统及其查询优化
第九章关系查询处理和查询优化9.1 关系数据库系统的查询处理 (1)9.1.1 查询处理步骤 (1)9.1.2 实现查询操作的算法示例 (2)9.2 关系数据库系统的查询优化 (5)9.2.1关系系统及其查询优化 (5)9.2.2 一个实例 (5)9.3 代数优化 (7)9.3.1 关系代数等价变换规则 (7)9.3.2 查询树的启发优化 (8)9.4 物理优化 (16)本章的目的是使读者初步了解RDBMS查询处理的基本步骤,查询优化的概念,基本方法和技术,为数据库应用开发中利用查询优化技术提高查询效率和系统性能打下基础9.1 关系数据库系统的查询处理查询处理的任务实把用户提交给RDBMS的查询语句转换为高效的执行计划9.1.1 查询处理步骤RDBMS查询处理分为4阶段:查询分析,查询检查,查询优化和查询执行,1.查询分析对查询语句进行扫描,词法分析和语法分析2.查询检查根据数字字典对合法的查询语句进行语义检查,既检查语句中的数据库对象,如属性名,关系名,是否存在和是否有效。
如果该用户没有相应的访问权限或违反了完整性约束,就拒绝执行该查询。
检查通过后便把SQL查询语句转换成等价的关系代数表达式。
3查询优化查询优化有多种方法。
按照优化的层次一般可分为代数优化和物理优化,代数优化是指关系代数表达式的优化,即按照一定的规则,改变代数表达式中操作的次序和组合,使查询执行更高效;物理优化则是指存取路径和底层操作算法的选择。
4查询执行9.1.2 实现查询操作的算法示例简单介绍选择操作和连接操作的实现算法,确切的说是算法思想。
每一种操作有多种执行这个操作的算法,这里只介绍最主要的几个算法。
一.选择操作的实现例1 Select*from student where<条件表达式>;C1:无条件;C2:Sno=’200215121’;C3:Sage>20;C4:Sdept=’CS’ AND Sage>20;1 简单的全表扫描方法对查询的基本表顺序扫描,逐一检查每个元素是否满足选择条件,把满足条件的元组作为结果输出。
数据库9-关系查询处理和查询优化
代数优化
关系代数表达式等价变换规则
查询树的启发式优化
An Introduction to Database System
关系代数表达式等价变换规则
代数优化策略:通过对关系代数表达式的等价变 换来提高查询效率 关系代数表达式的等价:指用相同的关系代替两 个表达式中相应的关系所得到的结果是相同的
An Introduction to Database System
一个实例(续)
三、 第三种情况
Q3=πSname(Student σo='2'(SC))
1. 先对SC表作选择运算,只需读一遍SC表,存取100块 花费时间为5s,因为满足条件的元组仅50个,不必使 用中间文件。 2. 读取Student表,把读入的Student元组和内存中的SC 元组作连接。也只需读一遍Student表共100块,花费 时间为5s。 3. 把连接结果投影输出 第三种情况总的执行时间≈5+5≈10s
在内存中尽可能多地装入某个表(如Student表)的若干块,留出一块 存放另一个表(如SC表)的元组。
把SC中的每个元组和Student中每个元组连接,连接后的元组装满 一块后就写到中间文件上
从SC中读入一块和内存中的Student元组连接,直到SC表处理完。 再读入若干块Student元组,读入一块SC元组 重复上述处理过程,直到把Student表处理完
An Introduction to Database System
查询树的启发式优化(续)
(3) 对每一个投影利用等价变换规则3,5,10,11中的一般形
式尽可能把它移向树的叶端。 注意:
9数据库系统原理 第九章 关系查询处理和查询优化
9.1.2实现查询操作的算法示例
• 一、选择操作的实现
–简单的全表扫描方法 •对查询的基本表顺序扫描,逐一检查每个 元组是否满足选择条件。 •简单,但对大表进行扫描时效率偏低。 –索引扫描方法 •通过索引先找到满足条件的元组主码或元 组指针。 •通过元组指针直接在查询的基本表中找到 元组。
一、选择操作的实现-索引扫描方法
9.3.1关系代数表达式等价变换规则
• 6.选择与笛卡儿集的交换律(*)
–假设:F中涉及的属性都是E1中的属性 σF( E1×E2)≡ σF ( E1 ) ×E2 –假设:F=F1∧F2,并且F1只涉及E1中的属性, F2只涉及E2中的属性 则由上面的等价变换规则1,4,6可推出: σF( E1×E2)≡ σF 1( E1 ) × σF 2 (E2 ) –假设: F=F1∧F2 ,并且F1只涉及E1中的属性, F2涉及E1和E2两者的属性 σF( E1×E2)≡ σF
二、连接操作的实现
•
例2: SELECT * FROM student S,SC WHERE S.sno=SC.sno –嵌套循环方法 • 对外层循环的每一个元组,检索内层循环中的每一个元组, 并检查这两个元组在连接属性上是否相等。若满足,则串接 后输出,直到外层循环表中的元组处理完毕。 –排序-合并方法 • 如果连接的表没有排序,首先对两个表按连接属性排序; • 取S表中第一个sno,一次扫描SC表中具有相同sno的元组, 把它们连接起来; • 当扫描到sno不相同的第一个SC元组时,返回S表扫描它的下 一个元组,再扫描SC表中具有相同sno的元组,把它们连接 起来; • 重复上述2个步骤,直到S表扫描完毕。
二、连接操作的实现
例2: SELECT * FROM student S, SC WHERE S.sno=SC.sno –索引连接方法 •在SC表上建立属性sno的索引; •对Student表中每一个元组,由sno值通过SC的索引 查找相应的SC元组; •把这些SC元组和Student表中的元组处理完为止; •重复上述2个步骤,直到Student表扫描完毕。
9查询优化
9.2 关系数据库系统的查询优化
9.2.1 关系系统及其查询优化
9.2.2 一个实例 9.2.3 查询优化的一般准则 9.2.4 关系代数等价变换规则 9.2.5 关系代数表达式的优化算法 9.2.6 优化的一般步骤
14
9.2 关系数据库系统的查询优化
9.2.1 关系系统及其查询优化
6
9.1.1关系系统的定义
说明 – 除了要支持关系数据结构外,还必须支持选择、投 影、连接运算,用户使用才方便,才能提高用户的 生产率。提高用户生产率正是关系系统的主要目标 之一。 – 依赖物理存取路径来实现关系运算就降低或丧失了 数据的物理独立性。不依赖物理存取路径来实现关 系运算就要求关系系统自动地选择路径。为此系统 要进行查询优化,以获得较好的性能。这正是关系 系统实施的关键技术。
34
9.2 关系数据库系统的查询优化
9.2.1 关系系统及其查询优化
9.2.2 一个实例 9.2.3 查询优化的一般准则 9.2.4 关系代数等价变换规则 9.2.5 关系代数表达式的优化算法 9.2.6 优化的一般步骤
35
9.2.6 优化的一般步骤
把查询转换成某种内部表示。
18
9.2.1 关系系统及其查询优化
– 生成查询计划(查询执行方案)。通常执行 方案有多个,需要对每个执行计划计算代价, 从中选择代价最小的一个。
目前的商品化RDBMS大都采用基于代价
的优化算法 总代价=I/O代价+CPU代价+内存代价
19
9.2 关系数据库系统的查询优化
9.2.1 关系系统及其查询优化
代数表达式的优化是查询优化的基本课题。研 究关系代数表达式的优化最好从研究关系代数 表达式的等价变换规则开始。 所谓关系代数表达式的等价是指用相同的关系 代替两个表达式中相应的关系所得到的结果是 相同的。 两个关系表达式E1和E2等价,记为E1=E2。
第9章 关系系统及其查询优化
数据库技术及应用
关系代数等价变换规则(续)
l0. 投影与并的交换
假设:E1和E2 有相同的属性名
π
π
A1,A2,
…,An(E1∪E2)≡
A1,A2,
A1,A2,
…,An(E1)∪ π
…,An(E2)
29
数据库技术及应用
小结
1-2: 连接、笛卡尔积的交换律、结合律
3: 合并或分解投影运算
4:
合并或分解选择运算
33
数据库技术及应用
关系代数表达式的优化算法 (续)
(5)对内结点分组
把上述得到的语法树的内节点分组。 每一双目运算(×, ,∪,-)和它所有的直 接祖先为一组(这些直接祖先是б,π运算)。 如果其后代直到叶子全是单目运算,则也将 它们并入该组,但当双目运算是笛卡尔积 (×),而且其后的选择不能与它结合为等值 连接时除外。把这些单目运算单独分为一组。
分布式数据库
总代价 = I/O代价 + CPU代价[+ 内存代价] + 通信代价
8
数据库技术及应用
9.2 查询优化的必要性
例:求选修了2号课程的学生姓名
SELECT Student.Sname FROM Student, SC WHERE Student.Sno=SC.Sno AND o='2';
而用户程序则难以获得这些信息
4
数据库技术及应用
由DBMS进行查询优化的好处
(2)如果数据库的物理统计信息改变了,系统可以自动对查 询重新优化以选择相适应的执行计划。 在非关系系统中必须重写程序,而重写程序在实际应用中 往往是不太可能的。 (3)优化器可以考虑数百种不同的执行计划,而程序员一般 只能考虑有限的几种可能性。
数据库系统第9章 关系查询处理和查询优化
通过这些元组指针到Student表中检索 并对得到的元组检查另一些选择条件(如Sage>20)是否满足
把满足条件的元组作为结果输出。
2.连接操作的实现
• 连接操作是查询处理中最耗时的操作之一 • 本节只讨论等值连接(或自然连接)最常用的实现算法 • [例9.2] SELECT *
4. 查询执行
• 依据优化器得到的执行策略生成查询执行计划 • 代码生成器(code generator)生成执行查询计划的代码 • 两种执行方法
• 自顶向下 • 自底向上
9.1 关系数据库系统的查询处理
9.1.1 查询处理步骤 9.1.2 实现查询操作的算法示例
9.1.2 实现查询操作的算法示例
• 全表扫描算法
• 假设可以使用的内存为M块,全表扫描算法思想:
① 按照物理次序读Student的M块到内存 ② 检查内存的每个元组t,如果满足选择条件,则输出t ③ 如果student还有其他块未被处理,重复①和②
选择操作的实现(续)
• 索引扫描算法 • [例9.1-C2] SELECT *
FROM Student
3. 查询优化
• 查询优化:选择一个高效执行的查询处理策略
• 查询优化分类
• 代数优化/逻辑优化:指关系代数表达式的优化 • 物理优化:指存取路径和底层操作算法的选择
• 查询优化的选择依据
• 基于规则(rule based) • 基于代价(cost based) • 基于语义(semantic based)
• 假设Sage 上有B+树索引 • 算法:
使用B+树索引找到Sage=20的索引项,以此为入口点在B+树的顺序集上得到Sage>20的 所有元组指针
第9章-关系查询处理和查询优化
An Introduction to Database System
查询处理步骤(续)
查询处理步骤
An Introduction to Database System
1. 查询分析
❖ 对查询语句进行扫描、词法分析和语法分析 ❖ 从查询语句中识别出语言符号 ❖ 进行语法检查和语法分析
• 试探阶段(probing phase):也称为连接阶段(join phase)
– 对另一个表(S)进行一遍处理 – 把S的元组散列到适当的hash桶中 – 把元组与桶中所有来自R并与之相匹配的元组连接起来
An Introduction to Database System
连接操作第一阶段后可以完全放入内存的hash桶中
An Introduction to Database System
2. 查询检查
❖ 根据数据字典对合法的查询语句进行语义检查 ❖ 根据数据字典中的用户权限和完整性约束定义对用户的存
取权限进行检查 ❖ 检查通过后把SQL查询语句转换成等价的关系代数表达式 ❖ RDBMS一般都用查询树(语法分析树)来表示扩展的关系
An Introduction to Database System
一、 选择操作的实现
❖[例1]Select * from student where <条件表达 式> ; 考虑<条件表达式>的几种情况:
C1:无条件; C2:Sno='200215121'; C3:Sage>20; C4:Sdept='CS' AND Sage>20;
第九章关系系统及其查询优化
第九章关系系统及其查询优化一单项选择题1 设E是关系代数表达式,F1,F2是选取条件表达式,则有______。
A σF1(σF2(E))≡σF1∨F2(E)B σF1(σF2(E))≡σF1∧F2(E)C σF1(σF2(E))≡σF1(E)D σF1(σF2(E))≡σF2(E)2 设E是关系代数表达式,F是选取条件表达式,并且只涉及A1,…,An属性,则有____。
A σF(πA1,…,An(E))≡πA1,…,An(σF(E))B σF(πA1,…,An(E))≡πA1,…,An(E)C σF(πA1,…,An(E))≡πA1(σF(E))D πA1,…,An(σF(E))≡πA1,…,An(σF(πA1,…,An,B1,…Bm(E)))3 如果条件F形为F1∧F2,F1仅涉及到E1中的属性,F2仅涉及到E2中的属性,则有_____。
A σF(E1×E2)≡σF1(E1)×σF2(E2)B σF(E1×E2)≡σF1(σF1(E1)×σF2(E2))C σF(E1×E2)≡σF2(σF1(E1)×σF2(E2))D σF(E1×E2)≡σF1(E2)×σF2(E1)4 如果一个系统定义为关系系统,则它必须___________。
A 支持关系数据库B 支持选择、投影和连接运算C A和B均成立D A和B都不需要5 如果一个系统为表式系统,则它支持__________。
A 关系数据结构B A与选择、投影和连接运算C A与所有的关系代数操作D C与实体完整性、参照完整性6 如果一个系统为关系完备系统,那么它支持___________。
A 关系数据结构B A与选择、投影和连接运算C A与所有的关系代数操作D C与实体完整性、参照完整性7 如果一个系统为全关系系统,那么它支持___________。
A 关系数据结构B A与选择、投影和连接运算C A与所有的关系代数操作D C与实体完整性、参照完整性8 关系代数表达式的优化策略中,首先要做的是__________。
第9章 关系查询优化
• 二、 连接操作的实现
2019/3/31
13
一、 选择操作的实现
• [例1]Select * from student where <条件表达 式> ; 考虑<条件表达式>的几种情况:
C1:无条件; C2:Sno='200215121'; C3:Sage>20; C4:Sdept='CS' AND Sage>20;
1000 10000 100 10 5
+
=100+20×100=2100块
• 其中,读Student表100块。读SC表20遍,每遍 100块。若每秒读写20块,则总计要花105s
9.2 关系数据库系统的查询优化
• 9.2.1 查询优化概述
• 9.2.2 一个实例
2019/3/31
30
9.2.1 查询优化概述
• 关系系统的查询优化
• 非关系系统
2019/3/31
31
查询优化概述(续)
• 查询优化的优点不仅在于用户不必考虑如何最好
地表达查询以获得较好的效率,而且在于系统可
① 在SC表上建立属性Sno的索引(如果原来没有
该索引)
② 对Student中每一个元组,由Sno值通过SC的
索引查找相应的SC元组
③ 把这些SC元组和Student元组连接起来
2019/3/31
循环执行②③,直到Student表中的元组处理完
25
连接操作的实现(续)
4. Hash Join方法
– 把连接属性作为hash码,用同一个hash函数把R和S 中的元组散列到同一个hash文件中
以比用户程序的“优化”做得更好
09 关系查询处理和查询优化
《数据库系统概论》 第九章 关系查询处理和查询优化
12
排序-合并方法(sort-merge join 或merge join)
适合连接的诸表已经排好序的情况 0715121 1 92 0715121 排序-合并连接方法的步骤: 0715121 2 85 如果连接的表没有排好序,先对Student表和SC表按连接属性 0715122 0715121 3 88 Sno排序 0715123 0715122 2 90 取Student表中第一个Sno,依次扫描SC表中具有相同Sno的元 组 0715122 3 80 0715124 . . . 当扫描到Sno不相同的第一个SC元组时,返回Student表扫描 . . . 它的下一个元组,再扫描SC表中具有相同Sno的元组,把它们 连接起来 排序-合并连接方法示意图 重复上述步骤直到Student 表扫描完 说明 Student表和SC表都只要扫描一遍 如果2个表原来无序,执行时间要加上对两个表的排序时间 对于2个大表,先排序后使用sort-merge join方法执行连接,总 的时间一般仍会大大减少
试探阶段(probing phase):也称为连接阶段(join phase)
对另一个表(S)进行一遍处理 把S的元组散列到适当的hash桶中 把元组与桶中所有来自R并与之相匹配的元组连接起来
Hash Join算法前提:假设两个表中较小的表在第一阶段 后可以完全放入内存的hash桶中 以上的算法思想可以推广到更加一般的多个表的连接算法 上
1查询处理和查询优化
二、一个实例
例3 求选修了2号课程的学生姓名。
用SQL表达: SELECT Student.Sname FROM Student, SC WHERE Student.Sno=SC.Sno AND o='2'; 假定学生-课程数据库中有1000个学生记录,10000个选课记录 其中选修2号课程的选课记录为50个
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第九章关系系统及其查询优化
1 .对学生一课程数据库有如下的查询:
SELECT AME FORM STUDENT,SC,COURSE WHERE STUDENT.SNO=SC.SNO AND O=O AND STUDENT.SDEPT=”IS”
此查询要求信息系学生选修了的所有课程名称。
试画出用关系代数表示的语法树,并用关系代数表达式优化算法对原始的语法树进行优化处理,画出优化后的标准语法树。
3 .试述查询优化的一般准则。
【解答】下面的优化策略一般能提高查询效率:
( l )选择运算应尽可能先做;
( 2 )把投影运算和选择运算同时进行;
( 3 )把投影同其前或其后的双目运算结合起来执行;
( 4 )把某些选择同在它前面要执行的笛卡儿积结合起来成为一个连接运算;
( 5 )找出公共子表达式;
( 6 )选取合适的连接算法。
4.试述查询优化的一般步骤。
答:各个关系系统的优化方法不尽相同,大致的步骤可以归纳如下:( l )把查询转换成某种内部表示,通常用的内部表示是语法树。
( 2 )把语法树转换成标准(优化)形式。
即利用优化算法,把原始的语法树转换成优化的形式。
( 3 )选择低层的存取路径。
( 4 )生成查询计划,选择代价最小的。