1. 程式人生 > >Sql查詢優化

Sql查詢優化

子句 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查詢優化