文|蘇昭虎
Oracle數(shù)據(jù)庫優(yōu)化技術在技校學生考試系統(tǒng)中的應用
文|蘇昭虎
對技?,F(xiàn)行課程考試業(yè)務進行詳細了解,通過認真調(diào)查后得知,原有的人工操作在考試工作中占的比重較大,考試流程是這樣的:教導處下發(fā)考試通知->老師出卷->安排考場->組織考前宣傳以及公布考場地點->印刷試卷->正式考試->閱卷->出成績->張榜公布成績等。根據(jù)調(diào)查結果,得到考試工作的組織機構設置如圖所示。
圖1 -1 考試組織機構設置圖
通過了解詳細情況之后并結合現(xiàn)行考試模式,而確定本系統(tǒng)的業(yè)務流程如圖1-2所示。
圖1 -2 考試系統(tǒng)業(yè)務流程圖
系統(tǒng)功能結構。根據(jù)需求分析可知,技校學生考試系統(tǒng)是由三大模塊組成:后臺管理模塊、考試功能模塊以及領導審核功能模塊,如圖2-1示。
數(shù)據(jù)庫設計。在Oracle數(shù)據(jù)庫服務器上建立名為exam的數(shù)據(jù)庫。該考試系統(tǒng)包括的數(shù)據(jù)表有:考生信息表(XS),成績表(CJ),學生檔案表 (DA),題庫表(TK),班級表(BJ)等表,因編幅有限而略去。
圖2 -1 系統(tǒng)功能模塊
SQL語句的優(yōu)化是作為Oracle數(shù)據(jù)庫系統(tǒng)中最為重要的一個組成部分。隨著考試系統(tǒng)數(shù)據(jù)庫的日漸增大,系統(tǒng)最為突出的問題就是數(shù)據(jù)訪問的響應速度。因此,這里對考試系統(tǒng)中的Oracle數(shù)據(jù)庫查詢技術進行優(yōu)化是十分有必要的。
考生考試信息查詢的優(yōu)化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語句我們能夠發(fā)現(xiàn)學生考試記錄查詢語句中對SQL語法使用存在錯誤,而最終使得某些字段索引出現(xiàn)失效的現(xiàn)象,即and to_char(c.dt,'yyyymm ')=to_char(sysdate,'yyyy-mm')這一句,因為索引列在函數(shù)中,那么索引將會失去原有的作用,這樣的一種SQL語句錯誤的做法,使得在考試系統(tǒng)數(shù)據(jù)庫建立時就被忽略掉了,其實這樣的忽略會使訪問速率造成較大的影響,那么我們可以改成這樣: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來取代替,這樣能夠在很大程度上提高考生信息記錄查詢的速率,優(yōu)化后完整的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)
考生成績信息查詢優(yōu)化
select * from CJ a,DA b where a.id=b.sno order by sno,km
該語句主要是實現(xiàn)了考生各個科目成績的查詢和排序,由于技??忌藬?shù)較多,且每個考生又對應著多個考試科目。雖然SQL語句很簡單,但是查詢速度卻是十分的慢。主要原因是由于這個語句中,有兩個關聯(lián)表中的兩個字段都沒有建立索引,從而使得查詢速度十分的慢,如果對這些字段全面建立起索引,那么就能夠全面有效地提髙這個語句的查詢速率。具體做法是:成績表(cj) 的科目字段km索引名為km_idx,檔案表(DA)的學號sno的索引名為sno_idx。所以需要在Oracle數(shù)據(jù)庫中創(chuàng)建兩條索引來進行優(yōu)化,下面通過兩條語句來建立數(shù)據(jù)表的相應索引:CREATE INDEX km_idx ON Exam.CJ(km)
CREATE INDEX sno_idx ON Exam.DA(sno)
優(yōu)化效果。通過對考生考試信息查詢和考生成績信息查詢頁面SQL語句的優(yōu)化,以此來提高查詢速度,下表3-1是優(yōu)化前和優(yōu)化后所用的時間:
表3-1 SQL優(yōu)化前后的性能測試結果
現(xiàn)在我們可以針對上面的問題來提出科學的檢修方法和需要注意的細節(jié)問題。先分析電路原理,搞清楚總體電路及各部分之間的相互聯(lián)系。如果遇到的事不熟悉的車型的線路,就要自己動手分析電路。排除故障按照先內(nèi)后外的順序進行,最后確定其技術狀況。汽車上許多電子電路,有的時候會由于性能原因,采用的是不可拆卸封裝,如厚膜封裝調(diào)節(jié)器、固封點火電路等。注意元件替換的可行性。在一些進口汽車的電路中,一些元件雖然可以拆卸,可是會缺少同型號分立元件代替,只能設法以國產(chǎn)或其它進口元件替代。這就要考慮一下替換的元件是不是可行。不允許采用“試火”的辦法判明故障部位與原因。在檢修方法上,傳統(tǒng)汽車電器故障,判明故障部位與原因可以采用“試火”的辦法逐一測試。“試火”這種方法并不是絕對的安全可靠,對蓄電池也有一定的危害,在傳統(tǒng)檢修方法上看還是可以使用的。但是在裝有電子線路的進口汽車上,考慮到測試時的危害則不允許使用這種方法。防止電流過載。檢測小功率晶體管時注意不要使用歐姆表及萬用表的Rx100 以下低阻歐姆檔,以免使晶體管電流過載而損壞。當心三極管被靜電擊穿。替換三極管時,要注意各個電極的接入順序,更換時應首先接入基極;拆卸時,則應最后拆卸基極。 對于金屬氧化物半導體管,則應當心靜電擊穿。焊接時,為了防止烙鐵燙壞元件,要從電源上拔下烙鐵插頭。在切斷電源的前提下再拆卸和安裝元件。如無特殊說明,元件引腳距焊點應控制在10mm 以上,以免烙鐵燙壞元件,應使用恒溫或功率較小的電烙鐵。
相信以這樣的方式開展的教學工作會更好地幫助學生對知識的積累,同時使課堂教學與實驗教學的效率與效果都能得到提高。
應用能力、操作能力是對職業(yè)院校學生的能力培養(yǎng)的重點,課程內(nèi)容也要突出實用性、技能性和應用性,汽車電子線路教學改革正是在這一思路的基礎上進行的。在我校汽車電子線路教學中進行實踐,通過一段時間的嘗試,獲得了較好的反饋,學生對汽車電子線路知識的理解與掌握有了一定的進步。
廣東省高級技工學校)