3.08、查询优化~~ISBL------关系代数
~~SQL
~~Embedded SQL---嵌入式
~~Dynamic SQL----动态
~~QBE----Language---域演算
这些都是数据库的应用语言
以后介绍DBMS内部
最外层为数据查询语言的编译
构造关系代数表达式(只含五种),把关系代数表达式构造语法数
一、问题的提出
一个用户查询,系统实现时均使用一个与之相应的关系代数表达式去求解。同一查询等价的关系代数表达式的不同,就会出现不同的求解路线。
例:有一SEQUEL语言书写的查询:
SELECT C#,GRADE
FROM S,SC
WHERE S.S#=SC.S# AND S.NAME='CHEN'
查询问题:
假定姓名唯一,则:
S.NAME='CHAN'
可以确定唯一的学号S.S#
用S.S#扫描SC关系匹配:S.S#=SC.S#并投影其C#,GRADE
用户查询:‘CHEN'所选课程课号和相应成绩
实际解释过程:
由:S.S#=SC.S#
被操作关系:S,SC,知:
先自然连接,产生如下关系:
S# NAME AGE SEX C# GRADE
然后选择:NAME=CHEN,投影C#,GRADE。
系统可用多种等价的关系代数表达式,实现该操作:
T1=用s与sc先乘,再条件,求C#,GRADE
T2=s与sc自然连接,再条件,求C#,GRADE
T3=先挑出name=chen,再自然连接,求C#,GRADE
运算复杂性比较
假如10000个学生,每个学生选5门课,则sc就有50000,
T1中s×sc就有5×10八次方,而有用的只有5,有用的只有10八次方分之一。
T2中s自然连接sc有5×10四次方,而有用的只有5,有用的只有10四次方分之一。
T3中先条件则选出唯一一个元组,再自然连接sc,得到最后的结果5个,明显运算量少于T1,T2.。。。。