Mysql 效能調優

2022-09-20 10:51:10 字數 1403 閱讀 8077

一. 基礎調優(從sql語句角度)

1. 單條記錄查詢最後新增 limit 1, 避免全表查詢;

2. 針對sql執行過長的語句進行explain解析, 再做相應調優;

3. where子句盡量避免:

- 表示式;

- 對null值判斷,建議對null值設定預設值0;

- 函式操作;

- 使用!=或<>操作符;

- 在 = 左邊進行函式,算數運算或其他表示式運算;

4. or 前後兩個列字段都是索引時,查詢才會走索引,

5. 盡量使用in執行符來替代or運算,對於連續的數值可以用between...and...替代in, exists替代in更好;

select num from table_a a where exists(select 1 from table_b where num=a.num);

6. 無重覆記錄的結果集使用union all合併;

7. 模糊查詢like的優化查詢, 替代 like '%a%

-locate(substr,str,pos)方法: 返回substr在str中第一次出現的位置.

如果substr在str中不存在, 返回值為0;

如果pos存在,返回substr在st 第pos個位置後第一次出現的位置,

示例:select * from table_a where locate(substr,str)>0select * from table_a where locate(substr,str,pos)>0

-position(substr in field)方法: position可以看做是locate的別名,功能跟locate一樣.

substr是要搜尋的內容,field為被匹配的字段,查詢出所有filed中存在substr的資料.

示例:   

select * from table_a where position(substr in field))

8. 避免select * from table_a, 而使用select 字段 from table_a;

9. 避免向客戶端返回大量資料, 若資料量過大, 應考慮是否合理.

二. 進一步調優(從資料庫設計,資料庫表設計角度)

1. 新增索引

- 針對以讀為主要業務且資料量較大的表

原因: 1) 新增索引能在某些場景下提高查詢效率,但索引需要維護,一定程度上會使dml操作變慢;

2) 索引會占用磁碟額外儲存空間.

- 對where及order by 涉及的字段上新增索引,乙個表索引最好不要6個;

2. 設計表時, 在滿足業務的前提下, 表中字段寬度盡可能的小;

3. 在可能情況下, 盡量將字段設定為 not null, 避免將來執行查詢對null值判斷;

4. ...

mysql效能調優

1.對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。2.應盡量避免在where子句中對字段進行null判斷,否則會導致引擎放棄使用索引而進行全表掃瞄。3.應盡量避免在where子句中使用 或 操作符,否則會導致引擎放棄使用索引而進行全表掃瞄。4...

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