SQL優化小結

2022-02-05 05:26:50 字數 1059 閱讀 1223

一 背景客戶資料庫經常出現死鎖、超時、查詢慢等問題,資料庫mssql,資料量主要表大概上千w。

二 收集資訊

首先是要找出io大、查詢慢、使用頻率高的指令碼。直接用profiler加上限制條件在生產環境收集了。

三 輔助指令碼

dmv動態管理檢視是必不可少的。還有其他一些命令用來如

1 set statistics io on 檢視io

2 set statistics time on 檢視時間

3 dbcc freeproccache 刪除計畫快取(正式環境慎用)

4 dbcc dropcleanbuffers 清除緩衝區(正式環境慎用)

5 set statistics profile on檢視執行計畫,當然也可以用圖形的

6 select identity(bigint, 1, 1) as rownumber,* into my_trace from fn_trace_gettable('c:\20141031.trc', default) 把跟蹤資訊匯入表中,方便統計檢視

四 優化方式

首先一般語句是先看執行計畫,大的儲存過程就在**斷前後插入時間如 print convert(varchar(30),getdate(),121),優化大體從技術和業務兩方面入手(不考慮換硬體)。在不同資料量環境下,執行計畫的表現是不同的,所以要具體問題具體分析,沒有絕對最優。

1 引數嗅探問題

2 避免adhoc(即席查詢)

3 是否缺少必要的索引,有索引但沒走索引,盡量把scan優化成seek

4 語句寫法是否合理,盡量只查詢想要的

5 臨時表和表變數合理使用

6 觸發器盡量少用

7 業務是否可以優化

8 查詢條件,盡量別在查詢條件裡用自定義函式,查詢條件左邊不要做計算

五 總結

經過這次優化,對dmv,執行計畫等有了初步了解,其中看msdn、sql大牛部落格對自己進步很有幫助,理論結合實際這樣印象會比較深刻。

資料庫 SQL優化小結

雖然前段時間有學習過這方面的知識,但是在面試的時候,腦子卻一片空白。我想一方面的原因是自己在開發中缺乏對sql優化這方面的關注,也就是缺乏實地應用 另一方面是缺乏總結。sql優化主要是為了提高資料crud的效率。因為索引可以提高資料檢索的效率,所以,大部分的sql優化策略都是為了避免某些sql語句導...

Spfa優化小結

spfa是bellman ford的優化。但是spfa還有優化餘地 一 空間優化,用迴圈佇列 要點 1 判斷隊列為空 只能用if f r if f2 取餘操作 只要加到f r操作的 所有地方就行了 二 簡單而有效的優化slf 如果隊首元素較大,則將新元素插到隊首,否則插到隊尾 slf優化 341.c...

CSS優化小結

一次面試的時候因為簡歷上寫了一句了解css 優化,面試官就問css有哪些地方可以優化,我答了儘量減少選擇器的巢狀和使用樣式繼承,自己後來感覺還有一些可以說的,這裡都列出來,方便以後應對面試。新增注釋,可以是說明一塊樣式是針對頁面哪一部分的,或者是哪個功能,可以是對作用不明顯的樣式或屬性做說明,注釋主...