ORACLE数据库的查询速度问题。
最近单位对原有的学籍管理系统升级下,以前的系统是购买来的,用的ORACLE 8i。我以前没怎么研究过ORACLE数据库,所以现在在开发过程中遇到了点问题,希望大家帮忙。
主要是学生成绩表(表名student_scoreinfo_c)的问题。这个表没有设计主键(购买来的网站软件就是这样设计的,这让我觉得很崩溃),使用前三列的信息来区分,分别是student_id(学生的编号,这个是所有表都有的关联项)、study_year(学年)还有study_term(学期)来区分每一列的数据。数据量是16万行。
由于原来的数据上传机制的缺陷,其中有一些的重复数据。而我又不想删除重复的行(不知道原先系统的运作机制,贸然行动可能导致原有的网站系统崩溃),所以补设主键这种事情就行不通。
并且这个学生成绩表里面没有归属学校的代码,而对于每一个学校的用户肯定只能让它知道自己学校的数据。所以我只能通过在另一个表student_basic_info(数据量是150W)里面查找该学校所有学生的student_id,然后拿着这些ID在来成绩表里面查找。
用的SQL语句如下,假设了学校ID是1070。
select * from student_scoreinfo_c where student_id in (select student_id from student_basic_info where school_id=1070)
create index student_scoreinfo_c_idx1 on student_scoreinfo_c(student_id);--这个index名字写错了。create index student_basic_info_idx1 on student_basic_info(school_id);