應用程式慢如牛,原因多多,可能是網路的原因、可能是系統架構的問題,還有可能是資料庫的原因。那麼如何提高資料庫sql語句執行速度呢?
程式中嵌入的sql語句,如果使用了一些優化小技巧,定能達到事半功倍的效果。
1、where子句中不使用 != ,否則放棄索引全表掃瞄
2、盡量避免 null 值判斷,否則放棄索引全表掃瞄
優化前 :
select number from t1 where number is
null
;
優化後 :
在number列上設定預設值0,確保number列無null值
select number from t1 where number=
0;
3、盡量避免 or 連線條件,否則放棄索引全表掃瞄
優化前 :
select id from t1 where id=
10or id=
20or id=
30;
優化後:
select id from t1 where id=
10union
allselect id from t1 where id=
20union
allselect id from t1 where id=
30;
4、模糊查詢盡量避免使用前置 % ,否則全表掃瞄
select name from t1 where name like
"%c%"
;
5、盡量避免使用 in 和 not in,否則全表掃瞄
select id from t1 where id in(1
,2,3
,4);
select id from t1 where id between
1and
4;
6、盡量避免使用 select * …;用具體字段代替 * ,不要返回用不到的任何字段 SQL 語句優化 OR 語句優化案例
從上海來到溫州,看了前幾天監控的sql語句和資料變化,發現有一條語句的io次數很大,達到了150萬次io,而兩個表的資料也就不到20萬,為何有如此多的io次數,下面是執行語句 select ws.nodeid,wi.laststepid,wi.curstepid from workflowinfo ...
sql語句的優化
1 in 操作符 用in寫出來的sql的優點是比較容易寫及清晰易懂,這比較適合現代軟體開發的風格。但是用in的sql效能總是比較低的,從oracle執行的步驟來分析用in的sql與不用in的sql有以下區別 oracle試圖將其轉換成多個表的連線,如果轉換不成功則先執行in裡面的子查詢,再查詢外層的...
SQL語句的優化
通過使用者反饋獲取存在效能問題的sql 通過慢查日誌獲取存在效能問題的sql 實時獲取存在效能問題的sql mysqldumpslow pt query digest pt query digest explain h 127.0.0.1,u root,p p ssword slow mysql.l...