1.select子句中盡量避免使用*
*表示全部查詢全部資料 如果資料庫資料量很大的話 你只能夠看著螢幕發呆了!
另外,如果select * 用於多表聯結,會造成更大的成本開銷。
2.使用where 避免在where左側出現運算 表示式 函式等 因為這樣會導致全表掃瞄
例如 where age+1 >17
優化方法: here age > 17 -1
所以,為了提高效率,where子句中遇到函式或加減乘除的運算,應當將其移到比較符號的右側。
3.盡量避免使用in和not in
in 和not in 也會進行全表掃瞄
例如 select id from t where num in(1,2,3)
對於連續的數值,能用 between 就不要用 in 了:
select id from t where num between 1 and 3
4.使用limit子句限制返回的資料行數
如果前台只需要顯示機行資料,而你的查詢結果集返回了1萬行,那麼這適合最好使用limt子句來限制查詢返回的資料行數。
5.應盡量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進行全表掃瞄
6.在使用索引字段作為條件時,如果該索引是復合索引,那麼必須使用到該索引中的第乙個字段作為條件時才能保證系統使用該索引,
否則該索引將不會被使用,並且應盡可能的讓字段順序與索引順序相一致。
7.很多時候用 exists 代替 in 是乙個好的選擇:
select num from a where num in(select num from b)
用下面的語句替換:
select num from a where exists(select 1 from b where num=a.num)
SQL 語句優化 OR 語句優化案例
從上海來到溫州,看了前幾天監控的sql語句和資料變化,發現有一條語句的io次數很大,達到了150萬次io,而兩個表的資料也就不到20萬,為何有如此多的io次數,下面是執行語句 select ws.nodeid,wi.laststepid,wi.curstepid from workflowinfo ...
sql語句優化!
1.不要使用in操作符,這樣資料庫會進行全表掃瞄,推薦方案 在業務密集的sql當中盡量不採用in操作符 a 改為 a 4.is null 或is not null操作 判斷字段是否為空 5.及 操作符 大於或小於操作符 大於或小於操作符一般情況下是不用調整的,因為它有索引就會採用索引查詢,但有的情況...
SQL語句優化
explain sql 反饋sql語句執行資訊 1 優化 select min id as nid,uid pmzongfen updatetime picid gg from qd mouldu qd sell limit 1 select uid pmzongfen updatetime pic...