MySQL效能優化

2021-08-22 04:55:57 字數 1586 閱讀 5786

,索引優化:

合理使用索引

,在經常查詢的表上而不經常增刪改的字段上加索引

,且乙個表上的索引最多不應超過6個

,order by

和group by

欄位後應該直接跟字段

,並且該字段是索引字段

;索引字段重複不應過多

;mysql

預設的索引是

btree索引,

使用多路搜尋樹的資料結構

,可以減少定位的中間過程

,中和效率較高

,但是使用該索引

,應該避免出現以下幾種情況

:(1),

where

子句中使用

like

關鍵字時,前置百分號會導致索引失效(起始字元不確定都會失效)。如:

select age from test where name like "%吉坤"

。 (2),

where

子句中使用

is null

或is not null

時,因為

null

值會被自動從索引中排除,索引一般不會建立在有空值的列上

(3)where

子句中使用

or關鍵字時,

or左右字段如果存在乙個沒有索引,有索引欄位也會失效;而且即使都有索引,因為二者的索引儲存順序並不一致,效率還不如順序全表掃瞄,這時引擎有可能放棄使用索引,所以要慎用or。

(4)where

子句中使用in或

not in

關鍵字時,會導致全表掃瞄,能使用

exists

或between and

替代就不使用in。

(5),

where

子句中使用

!=操作符時,將放棄使用索引,因為範圍不確定,使用索引效率不高,會被引擎自動改為全表掃瞄;

(6),

where

子句中應盡量避免對索引字段操作(表示式操作或函式操作),

(7),

在使用復合索引時,查詢時必須使用到索引的第乙個字段,否則索引失效;並且應盡量讓字段順序與索引順序一致。

(8),

查詢時必須使用正確的資料型別。資料庫包含了自動了型別轉換,比如純數字賦值給字串欄位時可以被自動轉換,但如果查詢時不加引號查詢,會導致引擎忽略索引。 二

,表結構優化,

1、設計符合第三正規化的表結構。 2

、盡量使用數字型字段,提高資料比對效率。 3

、對定長、

md5雜湊碼、長度較短的字段使用

char

型別,提高效率;對邊長而且可能較長字段使用

varchar

型別,節約記憶體。 4

、適當的進行水平分割與垂直分割,比如當表列數過多時,就將一部分列移出到另一張表中。 三

,其他優化:

當只查詢一條記錄時,使用

limit 1

修飾選取適當引擎

,當需要執行大量查詢操作時

,可以採用

mysiam引擎,

而innodb

支援行鎖

,在寫操作比較頻繁的時候可以選用該引擎

;

mysql效能優化 mysql效能優化

優化方式 1.空間換時間 冗餘 2.時間換空間 字段優先使用型別 int date char varchar text 索引型別 btree索引 hash索引 索引的葉子下,存放乙個資訊指向所在行的資料位址。btree有利於範圍查詢,hash有利於精確查詢。btree用的更多一些。btree索引的常...

mysql的效能優化 mysql效能優化

檢視安裝指令碼 select version 非互動式超時時間,如jdbc show global variables like wait timeout 互動式超時時間,如資料庫工具 show global variables like interactive timeout show sessi...

mysql 效能優化 命令 mysql效能優化

發現問題 當發現程式執行比較慢的時候,首先排除物力資源問題之後,就將注意力轉向mysq資料庫 1 首先確定執行慢的sql語句 mysql show full processlist 2 確認低效的查詢 多次執行第一步發現time耗費大的sql語句。檢視耗費的時間。3 分析效能 為sql生成乙個執行計...