SQL SERVER 資料庫優化總結

2021-10-01 11:01:39 字數 1273 閱讀 5674

1. 效能優化

開銷比較大:游標

使用不相容的資料型別:

無法通過索引,而是全盤掃瞄:①where欄位進行函式式或者表示式操作(盡量將操作移動到等號右邊,即不對列進行操作)、

②避免使用!=或<>、is null或is not null、in ,not in

③盡量避免在索引過的字元資料中,使用非打頭字母搜尋

表之間的關聯條件有多個時,需要將所有條件都關聯起來,否則可能搜尋結果不精確或搜尋效率降低

消除對大型錶行資料的順序訪問

儘管在所有的檢查列上都有索引,但某些形式的where子句強迫優化器使用順序訪問,

如select * from orders where (customer_num=104 and order_num>1001) or order_num=1008

把錶的乙個子集進行排序並建立檢視,有時能加速查詢,特別是需要聯表的時候。

能用between就不用in

能用union all就不要用union 。union all不執行select distinct函式,這樣就會減少很多不必要的資源

盡量不要用select into語句。select inot 語句會導致表鎖定,阻止其他使用者訪問該錶

雖然update、delete語句的寫法基本固定,但是還是對update語句給點建議:

a) 盡量不要修改主鍵字段。

b) 當修改varchar型字段時,盡量使用相同長度內容的值代替。

c) 盡量最小化對於含有update觸發器的表的update操作。

d) 避免update將要複製到其他資料庫的列。

e) 避免update建有很多索引的列。

f) 避免update在where子句條件中的列。

--分析案例

select distinct a.periodid,periodname from usermgr_teachinfo_period as a inner join 

v_usermgr_teachinfo_subjectglobalperiod as b on a.periodid=b.periodid inner join

usermgr_userinfo_teacher as c on c.subjectids like '%'+b.subjectid+'%' 

where a.schoolid=@schoolid and c.userid=@userid

--------------------------------------未完待續---------------------------------------

SQL Server資料庫優化

sql server日誌檔案過大 大日誌檔案清理方法 網上提供了很多分離資料庫 刪除日誌檔案 附加資料庫 的方法,此方法風險太大,過程也比較久,有時候也會出現分離不成功的現象。下面的方式是不需要做資料庫分離和附加操作的。sql 2008收縮清空日誌方法 1.在sql2008中清除日誌就必須在簡單模式...

SQLSERVER資料庫優化配置

sql server開啟read committed snapshot 查詢資料庫狀態 select name,user access,user access desc,snapshot isolation state,snapshot isolation state desc,is read co...

SQL Server 資料庫優化剖析

事件類 stored procedures rpc completed tsql sql batchcompleted 以特殊字元作為篩選條件 4 t sql查詢trace表 a 設定抓取的時候段 b 保持成檔案 然後用下面語句查詢檔案 唯一性高的字段放最前面 select where orderb...