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