Mysql常見優化技巧

2021-09-25 19:14:58 字數 861 閱讀 4835

mysql基礎打牢以後,優化就是一大難題。如何優化資料庫呢?這也是面試常見的問題,除了新增索引以外,我們還需要從這些方面考慮:

1)sql語句和索引(程式猿常常考慮的難題)

2)資料庫表結構(資料結構設計)

3)系統配置

4)硬體

硬體和系統配置不做介紹,先簡單介紹一下mysql常見效能優化技巧:

mysql 中有兩個引擎 myisam 和 innodb:

myisam 適用於一些大量查詢的應用,但對於有大量寫功能的應用不是很好。甚至你只需要update 乙個字段整個表都會被鎖起來,而別的程序就算是讀操作也不行,要等到當前 update 操作完成之後才能繼續進行(myisam 對於 select count(*)這類操作是超級快的)。

innodb 支援「行鎖」,所以在寫操作比較多的時候會比較優秀。並且,它支援很多的高階應用,例如:事物。

比如:in、not in、is null、is not null、<>、!=、or 、表示式等等

對於操作符的優化,主要目的就是為了避免全表掃瞄,盡量讓引擎使用索引。

1)in 和 not in慎用,盡量用 between代替in,用 not exists 代替 not in

2)is null和is not null慎用,num上設定預設值0,用=『0』來替代

3)!=或<>操作符能不用就不用,否則將使引擎放棄使用索引而進行全表掃瞄。

對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引,如果某個欄位總要拿來搜尋,應該為其建立索引:

mysql 新增索引,語法為:alter table 表名 add index (欄位名);

2)有機會再補

常見sql技巧 優化

1 正則 regexp 比like更消耗資源 select name,email from t where email regexp 163 com select name,email from t where email like 163.com ro email like 163,com 2 r...

常見MYSQL技巧

mysql利用regexp命令提供給使用者擴充套件的正規表示式功能,具體模式序列如下 序列序列說明 序列序列說明 在字串的開始處進行匹配 a?匹配1個或零個a 在字串的末尾處進行匹配 a1 a2 匹配a1或a2 匹配任意單個字元,包括換行符 a m 匹配m個a 匹配出括號內德任意字元 a m,匹配至...

mysql優化技巧

這邊總結一下mysql在使用過程中比較常見的優化小技巧,比較不好理解的都加了小例子 1 當使用索引列進行查詢的時候盡量不要使用表示式,可以把計算放在業務層,而不是資料庫層 錯誤例 select actor id from actor where actor id 1 5 2 盡量使用主鍵查詢,而不是...