資料庫優化原則

2021-12-29 23:11:08 字數 1986 閱讀 1418

最近資料庫課程設計,我總結了一下資料庫的優化方法,希望對有需要的人能有幫助:

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

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

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

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

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

select id from p where num=8 or num=12可以這樣查詢:

select id from p where num=8

union all

select id from p where num=125.in 和 not in 也要慎用,否則會導致全表掃瞄,如:select id from p where num in(1,2,3)對於連續的數值,能用 between 就不要用 in 了:select id from p where num between 1 and 36.下面的查詢也將導致全表掃瞄:

select id from p where name like '%abcd%'若要提高效率,可以考慮全文檢索。

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

select id from p where num=@number可以改為強制查詢使用索引:

select id from p with(index(索引名)) where num= @number8.應盡量避免在 where 子句中對字段進行表示式操作,這將導致引擎放棄使用索引而進行全表掃瞄。如:select id from t where num/2=10應改為:select id from t where num=10*29.應盡量避免在where子句中對字段進行函式操作,這將導致引擎放棄使用索引而進行全表掃瞄。如:

select id from t where substring(name,1,3)='abc'--name以abc開頭的id

select id from t where datediff(day,createdate,'2014-12-30')=0--『2014-12-30』生成的id

10.主鍵是必要的,sql server的主鍵同時是乙個唯一索引,而且在實際應用中,我們往往選擇最小的鍵組合作為主鍵,所以主鍵往往適合作為表的聚集索引。在有多個鍵的表,主鍵的選擇也比較重要,一般選擇總的長度小的鍵,小的鍵的比較速度快,同時小的鍵可以使主鍵的b樹結構的層次更少。主鍵的選擇還要注意組合主鍵的字段次序,對於組合主鍵來說,不同的字段次序的主鍵的效能差別可能會很大,一般應該選擇重複率低、單獨或者組合查詢可能性大的字段放在前面。

11.資料型別盡量用數字型,數字型的比較比字元型的快很多。

12.資料型別盡量小,這裡的盡量小是指在滿足可以預見的未來需求的前提下的。

13.盡量不要允許null,除非必要,可以用預設值代替。

14.少用text和image,二進位製字段的讀寫是比較慢的,而且,讀取的方法也不多,大部分情況下最好不用。

15.自增字段要慎用,不利於資料遷移。

16.適用檔案組可以有效把i/o操作分散到不同的物理硬碟,提高併發能力。

17.乙個表不要加太多索引,因為索引影響插入和更新的速度。

18.適當的使用冗餘的反正規化設計,以空間換時間有的時候會很高效。

19.聯表查詢的時候,記得把小結果集放在前面,遵循小結果集驅動大結果集的原則。

20.查詢盡可能使用limit減少返回的行數,減少資料傳輸時間和頻寬浪費。

資料庫優化原則

1 對於作為資料庫應用系統都所有者和使用者都企業或者組織來說,應當明白良好都資料庫設計和精心編寫都 都價值和重要性。2 花費盡可能多都努力來設計資料庫模式,因為所有的優化都要基於資料庫模式。3 集中精力優化執行最頻繁都 而不是那些執行最慢的 4 在公升級硬體之前進行優化。即使在速度快都伺服器上,壞 ...

資料庫優化 查詢優化原則

資料庫查詢優化 1.在表中建立索引,優先考慮where group by使用到的字段 2.盡量避免使用select 返回無用的字段會降低查詢效率 解決辦法 優化方式 使用具體的字段代替 只返回使用到的字段。3.盡量避免使用in 和not in,會導致資料庫引擎放棄索引進行全表掃瞄。優化方式 如果是連...

資料庫查詢優化原則

1.對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。2.應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃瞄,如 select id from t where num is null 可以在nu...