mysql優化經驗

2021-08-15 15:18:49 字數 1870 閱讀 2245

1.避免 select *  用具體的字段代替*,不要返回無用的字段

2.應該盡量避免在where字句中使用!=或<>操作符

3.應該盡量避免在where字句中對字段進行null判斷

select id from 表名 where num is null; (判斷是否為null不能使用=)

可以在num上設定預設值,比如0,確保表中沒有null值,然後這樣查詢:

select id from 表名 where num=0;

4.應該盡量避免在where字句中使用or來連線條件

select id from 表名 num=10 or num=20;

可以這樣查詢

select id from 表名 where num=10;

union all

select id from 表名 where num=20;

5.使用like模糊查詢會導致全表掃瞄

如 select id from t where num like '%123%'

若要提高效率可以使用全文檢索技術

6.盡量避免in 和 not in

select id from t  name in(1,2,3,4);

對於連續的數值可以用between 

select id from t between  1 and 4;

使用exists代替in,是乙個好的選擇

select num from a where num in(select num from b);

用下面的語句替換

select num from a where exists(select )

not in 優化

select id,name from table_a where id not in (select id from table_b)

這句是最經典的not in查詢了。改為表連線**如下:

select table_a.id,table_a.name from table_a left join table_b on table_a.id=table_b.id and table_b.id is null

或者:select table_a.id,table_a.name from table_a left join table_b on table_a.id=table_b.id where table_b.id is null

7.應該盡量避免在where字句中對字段進行表示式操作,如

select id from t where num/2=100;

應該為:

select id from where num=100*2;

8.不要在where字句中的「=」左邊進行函式、算數運算或其他表示式運算,否則系統將可能無法正確使用索引

9.盡量使用數字型字段

一部分開發人員和資料庫管理人員喜歡把包含數值資訊的字段,設計為字元型,這會降低查詢和連線的效能,並會增加儲存開銷,這是因為引擎在處理查詢和連線會逐個比較字串中每乙個字元,而對於數字型而言只需要比較一次就夠了

10.能夠用distinct就不要用group by

11.程式中如果一次性對同乙個表插入多條資料,把他拼成一條效率會更高,如下句

insert into person(name,age) values(『xboy』, 14);

insert into person(name,age) values(『xgirl』, 15); 

insert into person(name,age) values(『nia』, 19); 

把它拼成一條語句執行效率會更高.

insert into person(name,age) values(『xboy』, 14), (『xgirl』, 15),(『nia』, 19);

MySQL優化經驗

資料型別盡量用數字型,數字型比字元型的快 2 選擇正確的表引擎 myisam 適合於一些需要大量查詢的應用,但其對於有大量寫操作並不是很好。甚至你只是需要 update 乙個字段,整個表都會被鎖起來,而別的程序,就算是讀程序都無法操作直到讀操作完成。另外,myisam 對於 select count...

對mysql優化關注 MySQL優化經驗

1 資料型別盡量用數字型,數字型比字元型的快 2 選擇正確的表引擎 myisam 適合於一些需要大量查詢的應用,但其對於有大量寫操作並不是很好。甚至你只是需要update乙個字段,整個表都會被鎖起來,而別的程序,就算是讀程序都無法操作直到讀操作完成。另外,myisam 對於 select count...

MySQL 效能優化 經驗

1.為查詢快取優化你的查詢 大多數的mysql伺服器都開啟了查詢快取。這是提高性最有效的方法之一,而且這是被mysql的資料庫引擎處理的。當有很多相同的查詢被執行了多次的時候,這些查詢結果會被放到乙個快取中,這樣,後續的相同的查詢就不用操作表而直接訪問快取結果了。這裡最主要的問題是,對於程式設計師來...