資料庫SQL效能優化

2021-08-31 20:48:42 字數 931 閱讀 8148

如果訪問量巨大,除了sql優化外,還會涉及到分庫分表、讀寫分離、利用資料庫中介軟體來解決

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

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

select id from t where num is null

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

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

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

6.對於多張大資料量(這裡幾百條就算大了)的表join,要先分頁再join,否則邏輯讀會很高。

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

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

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

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

資料庫效能優化之SQL優化

優化目標 減少 io 次數 io永遠是資料庫最容易瓶頸的地方,這是由資料庫的職責所決定的,大部分資料庫操作中超過90 的時間都是 io 操作所占用的,減少 io 次數是 sql 優化中需要第一優先考慮,當然,也是收效最明顯的優化手段。降低 cpu 計算 除了 io 瓶頸之外,sql優化中需要考慮的就...

MySQL 資料庫效能優化之SQL優化

hosted on dreamhost 可以通過我的折扣碼imysqler獲得優惠折扣 有人反饋之前幾篇文章過於理論缺少實際操作細節,這篇文章就多一些可操作性的內容吧。盡量避免 select 很多人看到這一點後覺得比較難理解,上面不是在誤區中剛剛說 select 子句中字段的多少並不會影響到讀取的資...

MySQL 資料庫效能優化之SQL優化

有人反饋之前幾篇文章過於理論缺少實際操作細節,這篇文章就多一些可操作性的內容吧。注 這篇文章是以 mysql 為背景,很多內容同時適用於其他關係型資料庫,需要有一些索引知識為基礎 盡量避免 select 很多人看到這一點後覺得比較難理解,上面不是在誤區中剛剛說 select 子句中字段的多少並不會影...