mysql效能調優

2021-07-02 12:07:14 字數 2130 閱讀 1266

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

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

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

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

eg:select id from t where num = 1 or num = 2

可寫成:select id from t where num = 1 union all select id from t where num = 2

5.in和not in要慎用,否則會導致全表掃瞄。

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

由於1,2,3連續,最好用between,可寫成:

select id from t where num between 1 and 3

6.盡量避免使用模糊查詢。(where like 『%abc%』)

7.避免在where

子句中使用引數。(因為

sql只有在執行時才會解析區域性變數,但優化程式不能將訪問計畫的選擇推遲到執行時,必須在編譯時進行選擇。若在編譯時建立訪問計畫,變數的值未知,因此無法作為索引選擇的輸入項)

eg:select id from t where num = @num

可改寫為:

select id from t with(index(索引名

)) where num = @num

(強制使用索引查詢)

8.避免在where

子句中對字段進行表示式操作。(eg:

where num/2 = 1)

9.避免在where

子句中對字段進行函式操作。(eg:

where substring(name,1,3))

10.避免在where

子句中的「=」左邊進行函式,運算。

11.避免寫無意義的查詢。(where 1 = 0)

12.盡量用exists

代替in。

eg:select num from t where num in(select num from t1)

改寫為:

select num from t where exists(select 1 from t1 where num = t.num)

注:巢狀子查詢效率相當低,可使用exists

或join語句

13.盡量使用數字型字段,若只含數值資訊的字段盡量不要設計為字元型。(降低查詢和連線的效能,增加儲存開銷,引擎在處理查詢和連線時會比較字串中的每乙個字元,數字型欄位只比較一次)

14.盡量使用varchar

代替char

,因為變長字段儲存空間小,可節省儲存空間,查詢效率更高。

15.任何地方都不要使用select * from t

類似的語句,用具體的字段來代替*。

16.盡量使用表變數來代替臨時表。

17.避免大事務操作,提高系統併發能力。

18.避免向客戶端返回大資料量,若資料量過大,應考慮相應需求是否合理。

19.當知道查詢的結果集只有一條記錄,應使用limit 1。

20.為搜尋字段建立索引。

21.一定要為每張資料庫表設定乙個id

字段。(主鍵自增id,

int型別,

unsigned)

22.使用enum

代替varchar

。(若字段的取值是有限固定的)

23.使用固定長度的表會更快。

說明:若表中的字段是固定長度的,表就會是「static」的,使用固定的表會提高mysql

搜尋的速度,因為固定的長度是很容易計算下乙個資料的偏移量的。若欄位不是固定的,每一次找下一條記錄時都需要找錶的主鍵。固定長度的表的缺點就是會浪費空間,空間固定,沒有可變字段靈活。

24.要學會拆分長的delete

或insert語句

說明:當執行delete或insert

建議:融會貫通,多實踐多思考!

Mysql效能調優

mysql 效能調優有很多方面,主要是這幾個方面 1 正規化 是指表的列具有原子性,不可再拆分,只要資料庫是線性的,都自動滿足1nf。2 正規化 表中的紀錄是唯一的。3 正規化 表中資料不應該有冗餘,如果通過某個欄位就能得到跟該字段相關的資訊,就沒必要將這些資訊,再存放到該表中。在3nf中,可能會對...

MySQL效能調優

1 經常用來讀的表使用myisam儲存引擎 2 其餘的表都用innodb儲存引擎 1 在select where order by常涉及到的字段上建立索引 2 where子句中不使用 否則將放棄使用索引進行全表掃瞄 3 盡量避免用null值判斷,否則會全表掃瞄 示例 select id from t...

mysql效能調優

1.伺服器效能引數查詢 show global session status like 引數 一些常用的效能引數如下 connections 連線mysql伺服器的次數。uptime mysql伺服器的上線時間。slow queries 慢查詢的次數。innodb rows read select查...