语句上 考虑将 能过滤大量数据的条件写在最后面
另外一个重要的方面就是是否使用了索引
为where 中使用的列 创建索引。

解决方案 »

  1.   

    除了楼上说的,还要注意一点:
    3个表的排序,SC,STUDENT,COURCE
      

  2.   

    ORACLE 在执时是从左往又的顺序的
    所以要尽量把能过滤掉多的条件放在WHERE 的右边
    FROM 后面的表,尽量把数据少的放在右边
    还有就是建立索引Select姓名, 成绩from SC, STUDENT, COURSE 
    where STUDENT. 学号=SC. 学号 and SC. 课程号=COURSE. 课程号 
       and STUDENT. 系别=’IS’
      

  3.   

    楼主最好把这个语句的执行计划发出来看看。
    Oracle执行时是否按照“Where子句从右往左,From子句从左往右”的顺序来执行SQL还要看你的优化器是否选用的是基于规则的优化模式。
      

  4.   

    楼主,如果你查的结果数据量比较大(至少上万条记录),则为了提高速度可以考虑建索引,考虑一下zzwind5()对于oracle后台执行的规则,但我看了你的语句有点疑问:为什么要关联进课程表COURSE?Select姓名, 成绩from STUDENT, SC where STUDENT. 学号=SC. 学号 and STUDENT. 系别=’IS’就可以了啊