項目以我自己的設計編碼完成,並整合測試。初始化數據時,問題出現了。剛開始體現在客戶端接受數據很慢。測試環境環境下,數據庫服務器部署在國外,網站部署在公司內部,而且我一直認為我的程序在數據庫數據處理這裡已經做了足夠的優化,包括索引和主鍵已經做到了合理使用。綜上所述,起初的速度問題一直沒有引起我的關注。
然而最後問題的關鍵恰恰出在數據庫連接查詢方面,頻繁查詢導致數據初始化速度很慢。剛開始我采取的方法是即用即查:需要數據的時候就從數據庫查,有比較多的單表查詢返回單個字段的情況。假如我有大概3000條左右的數據集合,我循環取出其中的每一條,再從其它數據表裡查詢得到需要的字段,這樣無故增加了3000多次數據庫連接和關閉操作,當網絡速度不理想時,程序速度就無法忍耐了。
堅持一條原則:盡量減少數據庫連接操作。跟前端開發優化中的盡量少Http請求類似。
最終我采取的方案是將所需要的數據經過多個數據表統一放到一個List對象中,也就是放到內存中,在根據LINQ查詢其中的每條數據,這樣速度會快很多。這樣似乎破壞力一個原則,之前我遵循的多表查詢最好不要inner join3個以上的表,而這次出現了多次一個sql語句就inner join3個表以上的情況.雖然破壞了這個原則,但是相比速度極慢,連功能都實現不了的情況,顯然inner join 也可以讓人接受。