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