1. 程式人生 > >SQL語句查詢優化續集

SQL語句查詢優化續集

跟蹤 要去 條件 where -i 性能問題 放棄 算術 索引

--查詢語句的快慢
--開啟實際執行計劃跟蹤
--確保sql 性能問題,需要關閉自身的執行計劃和緩存。
DBCC DROPCLEANBUFFERS --dropcleanbuffers 清楚緩沖區
DBCC FREEPROCCACHE --freeproccache 刪除計劃公訴緩存中的元素
--開啟查詢IO讀取統計,時間統計
SET STATISTICS TIME ON --執行時間 statistics
SET STATISTICS IO ON --IO讀取 statistics


--優化引擎重點關註其中的Duration、Writes、Reads、CPU,分析對象是TextData,及執行的語句。其中Duration為毫秒數,1000即為1秒。

以上是對於sql 語句的查詢優化過程。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

我日常工作的數據處理比較少只有10w以下的數據,那麽對於百萬級的數據我們怎麽優化呢?

查詢條件的索引需要建立。條件不要去判斷null值,不然會導致全表掃描。

所以在設計數據庫表示,最好要用 not null 來填充數據。!= 或者<> 這種操作符都會導致放棄索引而全表掃描。or 也是,我們可以換成union 來代替。

in ,not in 用於嵌套查詢,這個比較好理解。 但這會導致全表掃描, 我們可以用exists 提高效率。

對於一些參數語句 我們可以強制使用索引 在 from with(index(索引名))

應盡量避免在where子句中對字段進行函數操作,這將導致引擎放棄使用索引而進行全表掃描

不要在 where 子句中的“=”左邊進行函數、算術運算或其他表達式運算,否則系統將可能無法正確使用索引。

在使用索引字段作為條件時,如果該索引是復合索引,那麽必須使用到該索引中的第一個字段作為條件時才能保證系統使用該索引,否則該索引將不會被使用,並且應盡可能的讓字段順序與索引順序相一致

SQL語句查詢優化續集