您的位置:首页 > 数据库

关系数据库系统的查询优化

2019-06-02 20:25 232 查看

关系查询优化是影响RDBMS性能的关键因素

 

v查询优化的总目标:

    选择有效的策略

    求得给定关系表达式的值

    使得查询代价最小(实际上是较小)

集中式数据库

      Ø执行开销主要包括:

                磁盘存取块数(I/O代价)

                处理机时间(CPU代价)

                查询的内存开销

      ØI/O代价是最主要的

分布式数据库

      Ø总代价=I/O代价+CPU代价+内存代价+通信代价

例题:

例1:求选修了2号课程的学生姓名。用SQL表达:

      SELECT  Student.Sname

     FROM  StudentSC

     WHERE  Student.Sno=SC.Sno AND    SC.Cno=‘2’

 

系统可以用多种等价的关系代数表达式来完成这一查询

1.     Q1=πSname(σStudent.Sno=SC.Sno∧Sc.Cno='2' (Student×SC))

        1. 计算广义笛卡尔积

        2. 作选择操作

        3. 作投影操作

2.     Q2=πSname(σSc.Cno='2' (Student      SC))

       1. 计算自然连接

       2. 读取中间文件块,执行选择运算

       3. 把第2步结果投影输出。

3.     Q3=πSname(Student       σSc.Cno='2'(SC))

       1. 先对SC表作选择运算,只需读一遍SC

       2. 读取Student表,把读入的Student元组和内存中的SC元组作连接

       3. 把连接结果投影输出 

4.

v假如SC表的Cno字段上有索引

     第一步就不必读取所有的SC元组而只需读取Cno=‘2’的那些元组(50)

vStudent表在Sno上也有索引

     第二步也不必读取所有的Student元组

     因为满足条件的SC记录仅50个,涉及最多50Student记录

     读取Student表的块数也可大大减少

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: