SQL Server 數據庫作為目前在社會上受到廣泛應用的一款數據庫,其設計優化是該領域的重大技術課題。中培偉業《SQL Server 2014數據庫管理與性能調優》培訓專家臧老師在這里就SQL Server 數據庫設計優化應注意的相關問題進行了詳細介紹。
1、不要使用游標。
使用游標不僅占用內存,而且還用不可思議的方式鎖定表,它們可以使DBA所能做的一切性能優化等于沒做。游標里每執行一次fetch就等于執行一次select。
2、創建適當的索引
每當為一個表添加一個索引,select會更快,可insert和delete卻大大變慢,因為創建了維護索引需要許多額外的工作。
1)采用函數處理的字段不能利用索引
2)條件內包括了多個本表的字段運算時不能進行索引
3、使用事務
對于一些耗時的操作,使用事務可以達到很好的優化效果。
4、小心死鎖
按照一定的次序來訪問你的表。如果你先鎖住表A,再鎖住表B,那么在所有的存儲過程中都要按照這個順序來鎖定它們。 如果某個存儲過程先鎖定表B,再鎖定表A,這可能會導致一個死鎖。
5、不要打開大的數據集
6、不要使用服務器端游標
與服務器端游標比起來,客戶端游標可以減少服務器和網絡的系統開銷,并且還減少鎖定時間。
7、不要忽略同時修改同一記錄的問題
有時候,兩個用戶會同時修改同一記錄,這樣,后一個修改者修改了前一個修改者的操作,某些更新就會丟失。處理這種情況,創建一個timestamp字段,在寫入前檢查它,如果允許,就合并修改,如果存在沖突,提示用戶。
8、盡量不要使用text數據類型
除非使用text處理一個很大的數據,否則不要使用它。因為它不易于查詢,速度慢,用的不好還會浪費大量的空間。一般varchar可以更好的處理數據。
9、避免在索引列上使用計算
where子句中,如果索引列是函數的一部分,優化器將不使用索引而使用全表掃描。
10、不同類型的索引效能是不一樣的
應盡可能先使用效能高的數字類型的索引查找效率高于字符串類型,定長字符串char、nchar的索引效率高于變長字符串varchar、nvarchar的索引。