3.08 optimization of Query 查询优化 2 159
159 §3.08 optimization of Query 查询优化
、 Putting the questions (问题的提出) 一个用户查询,系统实现时 均使用一个与之相应的关系代数表达式去求解。 同一查询等价的关系代数表达式的不同,就会 出现不同的求解路线。 例:有一SEQUEL语言书写的查询: SELECT C#.GRADE FROM S,SC WHERE S.S#=SC.S#AND S.NAME=CHAN 160
160 一、Putting the questions (问题的提出) 一个用户查询,系统实现时 均使用一个与之相应的关系代数表达式去求解。 同一查询等价的关系代数表达式的不同,就会 出现不同的求解路线。 例:有一SEQUEL语言书写的查询: SELECT C#,GRADE FROM S,SC WHERE S.S#=SC.S# AND S.NAME=‘CHAN’
查询问题: 假定姓名唯一,则 S.NAME=CHAN 可以确定唯一的学号S.S# 用S.S#扫描$C关系匹配:S.S#=SC.S#并投 影其C#,GRADE 用户查询:‘CHAN所选课程课号和相应成绩。 161
161 查询问题: 假定姓名唯一,则: S.NAME=‘CHAN’ 可以确定唯一的学号S.S# 用S.S#扫描SC关系匹配: S.S# =SC.S#并投 影其C#,GRADE 用户查询:‘CHAN’所选课程课号和相应成绩
实际解释过程: 由:S.S#=SC.S# 被操作关系:S,SC,知 先自然连接,产生如下关系: S# NAME AGE SEX C# GRADE 然后选择:NAME=CHEN,投影C#, GRADE
实际解释过程: 由: S.S#=SC.S# 被操作关系:S,SC,知: 先自然连接,产生如下关系: S# NAME AGE SEX C# GRADE 然后选择:NAME =CHEN ,投影C#,GRADE
系统可用多种等价的关系 代数表达式,实现该操作: T1=11C#,GRADE (òS.S#=SC.S#NAME=CHAN(SxSC)) T2=Π6#, GRADE NAME-CHAN (S ☒ sc)) T3=Πc*, GRADE (8 NAME=CHAN(s) 运算复杂性比较 162
162 系统可用多种等价的关系 代数表达式,实现该操作: T1=C#,GRADE(S.S#=SC.S#NAME=‘CHAN’(SSC)) T2=C#,GRADE (NAME=CHAN(S SC)) T3=C#,GRADE ( NAME=CHAN(s) SC) 运算复杂性比较