mysql資料庫如何優化?

2021-09-28 00:01:51 字數 1764 閱讀 6100

30種sql查詢語句優化方法:

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

select id from t where num is null

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

select id from t where num=0

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

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

可以這樣查詢:

select id from t where num=10

union all

select id from t where num=20

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

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

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

4、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

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

select id from t where num=@num

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

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

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

select num from a where num in(select num from b)

用下面的語句替換:

select num from a where exists(select 1 from b where num=a.num)

9、盡可能的使用 varchar/nvarchar 代替 char/nchar ,因為首先變長字段儲存空間小,可以節省儲存空間。

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

11.盡量新增限制條件,減少檢索資料的行數

12.能夠分開查詢的,盡量分開,可以提高每次響應的速度

13.盡量使用索引列為查詢的首列

14.盡量使用鏈結查詢替代子查詢

15.盡量不要修改主鍵的值

16.如果欄位的值的約束寫錯會導致索引不生效而全表掃瞄,字段型別盡量別寫錯。

17、分頁:查詢資料量比較大的時候可以考慮分頁,降低壓力。

二、.效能優化

1.分庫,

主從備份 讀寫分離

2.分表

一張表中的字段最好不要超過15個,將一張表拆分成 兩張或者多張表

允許部分字段冗餘

user

id name gennder phone emai info

拆分:user

id name phone

info

gennder phone emai info

Mysql資料庫如何優化?

1 優化分片鍵 如果有分庫分表 1 不要使用分割槽,分割槽效能很低,難以維護 2 不要使用主從資料庫,讀寫分離有了快取就再也不需要分主從了,畢竟延遲問題是無法解決的 雖然很小 3 如果使用分庫分表,那麼查詢條件務必先走分片鍵,否則就成了全表查詢,效能超低 2 優化索引 1 索引列務必重複度低 2 使...

資料庫如何優化

1.程式優化,用 prepareedstatement 進行增刪改查 2.程式優化,盡量批量處理,避免逐條處理,減小 io數 3.查詢結果不要用 來查詢所有字段,要明確指明結果字段 4.減少多表連線數,盡量少的表進行連線 5.表連線時,盡量用主鍵進行連線或用唯一索引 6.表的查詢多時,一定建立索引 ...

MySQL資料庫如何做好優化

碰到過好幾次這樣的題目,可每次都不能答的完全正確.現在大概列出如下 忘各位補充 1.資料庫的設計 盡量把資料庫 設計的更小的佔磁碟空間.1 盡可能使用更小的整數型別.mediumint就比int更合適 2 盡可能的定義欄位為not null,除非這個字段需要null.3 如果沒有用到變長字段的話比如...