資料庫的優化

2021-09-08 01:25:16 字數 1464 閱讀 5607

1.對查詢進行優化,要盡量避免全表掃瞄,首先應考慮在 where

及 order by 涉及的列上建立索引。

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

null

不要以為 null 不需要空間,比如:

char(100) 型,在字段建立時,空間就固定了, 不管是否插入值(null也包含在內),都是占用 100個字元的空間的,如果是varchar這樣的變長字段, null 不占用空間。

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

4.應盡量避免在 where 子句中使用 or 來連線條件,如果乙個欄位有索引,乙個字段沒有索引,將導致引擎放棄使用索引而進行全表掃瞄,如:select id from t wherenum=10orname='

admin

'不過可以這樣查詢:select id from t wherenum=10 unionall select id from t where name='admin'

5.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

很多時候用 exists 代替 in 是乙個好的選擇

select id from t where name like 『%abc%』  這也將導致全表掃瞄。

6.select count(*) from table;這樣不帶任何條件的count會引起全表掃瞄,並且沒有任何業務意義,是一定要杜絕的。

7.索引並不是越多越好,索引固然可以提高相應的 select 的效率,但同時也降低了 insert 及 update 的效率,因為 insert 或 update 時有可能會重建索引,所以怎樣建索引需要慎重考慮,視具體情況而定。乙個表的索引數最好不要超過6個,若太多則應考慮一些不常使用到的列上建的索引是否有 必要。

8.盡量使用數字型字段,若只含數值資訊的字段盡量不要設計為字元型,這會降低查詢和連線的效能,並會增加儲存開銷。這是因為引擎在處理查詢和連 接時會逐個比較字串中每乙個字元,而對於數字型而言只需要比較一次就夠了。

9.盡可能的使用 varchar/nvarchar 代替 char/nchar ,因為首先變長字段儲存空間小,可以節省儲存空間,其次對於查詢來說,在乙個相對較小的字段內搜尋效率顯然要高些。

10.任何地方都不要使用 select * from t ,用具體的字段列表代替「*」,不要返回用不到的任何字段。

資料庫優化 資料庫設計優化

一 索引優化 1.首先索引不是越多越好,要視情況而定。因為索引會降低insert和update的效率 insert和update有時可能會重建索引。2.乙個表的索參數量最好不要超過6個,擇優而建。3.專案上線後,根據使用者的查詢條件字段稍微調整資料庫中的字段索引。二 分表 1.縱切 根據表字段來且分...

資料庫引擎優化顧問優化資料庫

現在一直在做的專案,資料量相對也不小,開始的時候沒有覺得,因為是剛開始,資料量還很小,在程式使用過程中速度還挺快,但是隨著資料量的不停的增長,發現程式越來越慢,甚至出現了超時的問題,因此要對程式和資料庫進行優化,前期專案比較緊,沒有針對大資料量業務進行分析設計,所以索引等相關優化沒有做到位,通過後期...

資料庫的優化

是一種綜合性的技術,不是通過某一種方式讓資料庫效率提高很多,而是通過各個方面的優化,來是資料庫效率明顯的穩步的提高。優化分為了兩大類,軟優化和硬優化,軟優化一般是運算元據庫即可,而硬優化則是操作伺服器硬體及引數設定 1 查詢語句優化 2 優化子查詢 在mysql中,盡量使用join來代替子查詢.因為...