Sql查詢優化
阿新 • • 發佈:2017-10-30
子句 order by 連續 char 設置 nio 引擎 重復 超過
一,數據庫設計角度
1.盡量避免全表查詢,首先考慮在where一級order by的列上建立索引。
2.盡量避免在where的子句中進行null判斷,導致引擎放棄索引進行全表掃描。列如:select id from t where num is null;可以在num設置為0,確保不會出現null
3.並不是所有索引對查詢都有效,如果字段中含有大量重復數據,sql會對查詢進行優化,不會使用索引
4.索引會提高select效率,但是會降低insert和update,因為要建立索引,所以一個表中索引最好不要超過6個
5.避免更新索引數據列
6.盡量使用數字型字段
7.使用varchar/nvarchar代替char/uchar
8.盡量使用表變量代替臨時表
9.避免頻繁創建和刪除臨時表
二Sql方面
1.盡量避免在where子句中使用!= ,<與>,會導致引擎放棄索引進行全表掃描
2.盡量避免在where子句中使用or會導致引擎放棄索引進行全表掃描
select id from t where id = 1 or id = 2可以使用select id from t where id union all select id from t where id = 2
3.in 與 not in也要慎用會導致全表掃描,對於連續的數值可以使用between
select id from where id in (1,2,3)可以使用select id from where id between 1 and 3
Sql查詢優化