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來代替子查詢.因為...