SQL優化方法

2022-07-16 01:51:11 字數 1684 閱讀 2850

1、應盡量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進行全表掃瞄。

2、對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。

3、應盡量避免在 where 子句中對字段進行 null值判斷,否則將導致引擎放棄使用索引而進行全表掃瞄,如:

select id from t where num is null

可以在num上設定預設值0,確保表中num列沒有null值,然後這樣查詢:

select id from t where num=0

4、盡量避免在 where 子句中使用 or 來連線條件,否則將導致引擎放棄使用索引而進行全表掃瞄,如:

select id from t where num=10 or num=20

可以這樣查詢:

select id from t where num=10unionallselect id from t where num=20

5、下面的查詢也將導致全表掃瞄:(不能前置百分號)

select id from t where name like 『%c%』

若要提高效率,可以考慮全文檢索。

6、in 和 not in 也要慎用,否則會導致全表掃瞄,如:

select id from t where num in(1,2,3)

對於連續的數值,能用 between 就不要用 in 了:

select id from t where num between 1 and 3

7、如果在 where 子句中使用引數,也會導致全表掃瞄。因為sql只有在執行時才會解析區域性變數,但優化程式不能將訪問計畫的選擇推遲到執行時;它必須在編譯時進行選擇。然而,如果在編譯時建立訪問計畫,變數的值還是未知的,因而無法作為索引選擇的輸入項。如下面語句將進行全表掃瞄:

select id from t where num=@num

可以改為強制查詢使用索引:

select id from t with(index(索引名)) wherenum=@num

8、應盡量避免在 where 子句中對字段進行表示式操作,這將導致引擎放棄使用索引而進行全表掃瞄。如:

select id from t where num/2=100

應改為:

select id from t where num=100*2

9、應盡量避免在where子句中對字段進行函式操作,這將導致引擎放棄使用索引而進行全表掃瞄。如:

select id from t wheresubstring(name,1,3)=』abc』–name以abc開頭的idselect id from t wheredatediff(day,createdate,』2005-11-30′)=0–』2005-11-30′生成的id

應改為:

select id from t where name like『abc%』select id from t where createdate>=』2005-11-30′ andcreatedate<』2005-12-1′

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

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

SQL語句優化方法

1.把資料 日誌 索引放到不同的i o裝置上,增加讀取速度,以前可以將tempdb應放在raid0上,sql2000不在支援。資料量 尺寸 越大,提高i o越重要 2.縱向 橫向分割表,減少表的尺寸 3.根據查詢條件,建立索引,優化索引 優化訪問方式,限制結果集的資料量。注意填充因子要適當 最好是使...

SQL索引優化方法

sql索引優化方法 以下是 片段 select top 50 row number over order by resumecreatetime desc as rowid topdegree degreerankid userresume userresumeid userresume useri...

效能優化 索引優化SQL的方法

增加索引會有利於查詢效率,但會降低insert,update,delete的效率,但實際上往往不是這樣的,過多的索引會不但會影響使用效率,同時會影響查詢效率,這是由於資料庫進行查詢分析時,首先要選擇使用哪乙個索引進行查詢,如果索引過多,分析過程就會越慢,這樣同樣的減少查詢的效率,因此我們要知道如何增...