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的資料庫引擎處理的。當有很多相同的查詢被執行了多次的時候,這些查詢結果會被放到乙個快取中,這樣,後續的相同的查詢就不用操作表而直接訪問快取結果了。這裡最主要的問題是,對於程式設計師來...