為你的數據庫創建一個健壯的索引,那可是功德一件?梢龅竭@一點簡直就是一門藝術。每當你為一個表添加一個索引,SELECT會更快了,可INSERT和DELETE卻大大的變慢了,因為創建了維護索引需要許多額外的工作。顯然,這里問題的關鍵是:你要對這張表進行什么樣的操作。這個問題不太好把握,特別是涉及DELETE和UPDATE時,因為這些語句經常在WHERE部分包含SELECT命令。
六、不要給“性別”列創建索引
首先,我們必須了解索引是如何加速對表的訪問的。你可以將索引理解為基于一定的標準上對表進行劃分的一種方式。如果你給類似于“性別”這樣的列創建了一個索引,你僅僅是將表劃分為兩部分:男和女。你在處理一個有1,000,000條記錄的表,這樣的劃分有什么意義?記。壕S護索引是比較費時的。當你設計索引時,請遵循這樣的規則:根據列可能包含不同內容的數目從多到少排列,比如:姓名+省份+性別。
七、使用事務
請使用事務,特別是當查詢比較耗時。如果系統出現問題,這樣做會救你一命的。一般有些經驗的程序員都有體會-----你經常會碰到一些不可預料的情況會導致存儲過程崩潰。
八、小心死鎖
按照一定的次序來訪問你的表。如果你先鎖住表A,再鎖住表B,那么在所有的存儲過程中都要按照這個順序來鎖定它們。如果你(不經意的)某個存儲過程中先鎖定表B,再鎖定表A,這可能就會導致一個死鎖。如果鎖定順序沒有被預先詳細的設計好,死鎖是不太容易被發現的。
九、不要打開大的數據集
一個經常被提出的問題是:我怎樣才能迅速的將100000條記錄添加到ComboBox中?這是不對的,你不能也不需要這樣做。很簡單,你的用戶要瀏覽100000條記錄才能找到需要的記錄,他一定會詛咒你的。在這里,你需要的是一個更好的UI,你需要為你的用戶顯示不超過100或200條記錄。
十、不要使用服務器端游標
與服務器端游標比起來,客戶端游標可以減少服務器和網絡的系統開銷,并且還減少鎖定時間。
十一、使用參數查詢
有時,我在CSDN技術論壇看到類似這樣的問題:“SELECT * FROM a WHERE a.id='A'B,因為單引號查詢發生異常,我該怎么辦?”,而普遍的回答是:用兩個單引號代替單引號。這是錯誤的。這樣治標不治本,因為你還會在其他一些字符上遇到這樣的問題,更何況這樣會導致嚴重的bug,除此以外,這樣做還會使SQL Server的緩沖系統無法發揮應有的作用。使用參數查詢, 釜底抽薪,這些問題統統不存在了。
十二、在程序編碼時使用大數據量的數據庫
程序員在開發中使用的測試數據庫一般數據量都不大,可經常的是最終用戶的數據量都很大。我們通常的做法是不對的,原因很簡單:現在硬盤不是很貴,可為什么性能問題卻要等到已經無可挽回的時候才被注意呢?
十三、不要使用INSERT導入大批的數據
請不要這樣做,除非那是必須的。使用UTS或者BCP,這樣你可以一舉而兼得靈活性和速度。
十四、注意超時問題
查詢數據庫時,一般數據庫的缺省都比較小,比如15秒或者30秒。而有些查詢運行時間要比這長,特別是當數據庫的數據量不斷變大時。
文章來源于領測軟件測試網 http://www.kjueaiud.com/