開(kāi)發(fā)筆記7 2012-5-9 周三 終于把COM口收發(fā)短信的C代碼修改好了,以前連續(xù)發(fā)送兩條就會(huì)出錯(cuò),第二條總是發(fā)送不了,跟蹤下日志,發(fā)現(xiàn)第一條根本沒(méi)收完應(yīng)答,以前的代碼可能從網(wǎng)上COPY回來(lái)都沒(méi)怎么修改,聽(tīng)說(shuō)是很早時(shí)一個(gè)畢業(yè)生寫的,能搞出來(lái)發(fā)個(gè)單條就算了。COM收發(fā)是很慢的,所以要自己判斷,多次讀寫。
做完后檢查了一下Web管理系統(tǒng),美工和JAVA開(kāi)發(fā)人員搞的一團(tuán)糟,很多頁(yè)面上周還可以,現(xiàn)在竟然修改到這樣了。新兵組隊(duì)配合很成問(wèn)題,配合默契都需要一個(gè)過(guò)程,急功近利結(jié)果是人心惶惶。
還發(fā)現(xiàn)一個(gè)統(tǒng)計(jì)頁(yè)面慢得像蝸牛一樣,一分析sql極端復(fù)雜,而且思路有點(diǎn)搞錯(cuò),雖然最后結(jié)果也正確,趕快自己寫個(gè)存儲(chǔ)過(guò)程,利用臨時(shí)表,很快搞定,同樣的數(shù)據(jù),1秒鐘都不用,數(shù)據(jù)本來(lái)就很小,就是需要5張表聯(lián)合查詢而已。
當(dāng)業(yè)務(wù)邏輯需要很多表關(guān)聯(lián)查詢時(shí),有時(shí)硬是要一條語(yǔ)句搞定,其結(jié)果可能性能無(wú)法接受,我喜歡兩種做法:
1. 數(shù)據(jù)庫(kù)支持存儲(chǔ)過(guò)程,最好在存儲(chǔ)過(guò)程里封裝對(duì)表的密集訪問(wèn),可以適當(dāng)分步驟查詢,借助臨時(shí)表緩存中間數(shù)據(jù),常常簡(jiǎn)化問(wèn)題,容易實(shí)現(xiàn),簡(jiǎn)單就不容易出錯(cuò),真要優(yōu)化也容易找。
2. 如果不想寫存儲(chǔ)過(guò)程,那就在JAVA代碼里采用多次調(diào)用,自己在JAVA代碼里實(shí)現(xiàn)一些數(shù)據(jù)合并等。
我對(duì)數(shù)據(jù)庫(kù)不熟悉,花的時(shí)間太少了,尤其是ORACLE,都想把部分系統(tǒng)的數(shù)據(jù)庫(kù)從ORACLE轉(zhuǎn)到MYSQL,集中學(xué)一門容易,雜了總是不好。