Oracle数据库优化技术在技校学生考试系统中的应用
2015-04-27苏昭虎
文|苏昭虎
Oracle数据库优化技术在技校学生考试系统中的应用
文|苏昭虎
技术考试系统的需求分析
对技校现行课程考试业务进行详细了解,通过认真调查后得知,原有的人工操作在考试工作中占的比重较大,考试流程是这样的:教导处下发考试通知->老师出卷->安排考场->组织考前宣传以及公布考场地点->印刷试卷->正式考试->阅卷->出成绩->张榜公布成绩等。根据调查结果,得到考试工作的组织机构设置如图所示。
图1 -1 考试组织机构设置图
通过了解详细情况之后并结合现行考试模式,而确定本系统的业务流程如图1-2所示。
图1 -2 考试系统业务流程图
技校考试系统的功能结构设计
系统功能结构。根据需求分析可知,技校学生考试系统是由三大模块组成:后台管理模块、考试功能模块以及领导审核功能模块,如图2-1示。
数据库设计。在Oracle数据库服务器上建立名为exam的数据库。该考试系统包括的数据表有:考生信息表(XS),成绩表(CJ),学生档案表 (DA),题库表(TK),班级表(BJ)等表,因编幅有限而略去。
图2 -1 系统功能模块
Oracle数据库优化技术在考试系统中的应用
SQL语句的优化是作为Oracle数据库系统中最为重要的一个组成部分。随着考试系统数据库的日渐增大,系统最为突出的问题就是数据访问的响应速度。因此,这里对考试系统中的Oracle数据库查询技术进行优化是十分有必要的。
考生考试信息查询的优化SELECT *
FROM XS b , DA c , CJ d
WHERE a.id=b.id AND b.sno=c.sno AND c.sno=d .sno AND to_char(c.dt ,'yyyy-mm')
=to_char(sysdate , 'yyyy-mm') AND b.id(题号) IN
(SELECT id
FROM TK t WITH t .id=b.id Connect BY t .id=Prior b.id)
从上面的Oracle中的SQL语句我们能够发现学生考试记录查询语句中对SQL语法使用存在错误,而最终使得某些字段索引出现失效的现象,即and to_char(c.dt,'yyyymm ')=to_char(sysdate,'yyyy-mm')这一句,因为索引列在函数中,那么索引将会失去原有的作用,这样的一种SQL语句错误的做法,使得在考试系统数据库建立时就被忽略掉了,其实这样的忽略会使访问速率造成较大的影响,那么我们可以改成这样:and c.dt=trunc(sysdat e,'yyyy-mm') and c.dt<=last_ day(sysdate)。另一个语句a and b.id(题号) In (Select id From TK t With t.id=b.id Connect By t.id=Prior sj_b.id)中的in能够用exists来取代替,这样能够在很大程度上提高考生信息记录查询的速率,优化后完整的SQL语句是这样的:
SELECT *
FROM XS b , DA c , CJ d
WHERE a.id=b.id AND b.sno=c.sno AND c.sno=d .sno AND
c.dt=trunc(sysdat e , 'yyyy-mm') AND c.dt <=last_day(sysdate) AND
EXISTS
(SELECT 1 FROM TK t WHERE b.id=t .id Connect BY t .id=Prior b.id)
考生成绩信息查询优化
select * from CJ a,DA b where a.id=b.sno order by sno,km
该语句主要是实现了考生各个科目成绩的查询和排序,由于技校考生人数较多,且每个考生又对应着多个考试科目。虽然SQL语句很简单,但是查询速度却是十分的慢。主要原因是由于这个语句中,有两个关联表中的两个字段都没有建立索引,从而使得查询速度十分的慢,如果对这些字段全面建立起索引,那么就能够全面有效地提髙这个语句的查询速率。具体做法是:成绩表(cj) 的科目字段km索引名为km_idx,档案表(DA)的学号sno的索引名为sno_idx。所以需要在Oracle数据库中创建两条索引来进行优化,下面通过两条语句来建立数据表的相应索引:CREATE INDEX km_idx ON Exam.CJ(km)
CREATE INDEX sno_idx ON Exam.DA(sno)
优化效果。通过对考生考试信息查询和考生成绩信息查询页面SQL语句的优化,以此来提高查询速度,下表3-1是优化前和优化后所用的时间:
表3-1 SQL优化前后的性能测试结果
现在我们可以针对上面的问题来提出科学的检修方法和需要注意的细节问题。先分析电路原理,搞清楚总体电路及各部分之间的相互联系。如果遇到的事不熟悉的车型的线路,就要自己动手分析电路。排除故障按照先内后外的顺序进行,最后确定其技术状况。汽车上许多电子电路,有的时候会由于性能原因,采用的是不可拆卸封装,如厚膜封装调节器、固封点火电路等。注意元件替换的可行性。在一些进口汽车的电路中,一些元件虽然可以拆卸,可是会缺少同型号分立元件代替,只能设法以国产或其它进口元件替代。这就要考虑一下替换的元件是不是可行。不允许采用“试火”的办法判明故障部位与原因。在检修方法上,传统汽车电器故障,判明故障部位与原因可以采用“试火”的办法逐一测试。“试火”这种方法并不是绝对的安全可靠,对蓄电池也有一定的危害,在传统检修方法上看还是可以使用的。但是在装有电子线路的进口汽车上,考虑到测试时的危害则不允许使用这种方法。防止电流过载。检测小功率晶体管时注意不要使用欧姆表及万用表的Rx100 以下低阻欧姆档,以免使晶体管电流过载而损坏。当心三极管被静电击穿。替换三极管时,要注意各个电极的接入顺序,更换时应首先接入基极;拆卸时,则应最后拆卸基极。 对于金属氧化物半导体管,则应当心静电击穿。焊接时,为了防止烙铁烫坏元件,要从电源上拔下烙铁插头。在切断电源的前提下再拆卸和安装元件。如无特殊说明,元件引脚距焊点应控制在10mm 以上,以免烙铁烫坏元件,应使用恒温或功率较小的电烙铁。
相信以这样的方式开展的教学工作会更好地帮助学生对知识的积累,同时使课堂教学与实验教学的效率与效果都能得到提高。
应用能力、操作能力是对职业院校学生的能力培养的重点,课程内容也要突出实用性、技能性和应用性,汽车电子线路教学改革正是在这一思路的基础上进行的。在我校汽车电子线路教学中进行实践,通过一段时间的尝试,获得了较好的反馈,学生对汽车电子线路知识的理解与掌握有了一定的进步。
广东省高级技工学校)