1、對查詢進行優化,應儘可能避免全表掃描,首先應考慮在 where 及 where and order by 涉及的列上創建索引。索引字段添加原則是 經過某個字段來 查詢排序檢索數據庫時 應該加索引提升效率sql
2、應儘可能避免在 where 子句中對字段進行 null 值判斷,不然將致使引擎放棄使用索引而進行全表掃描,如: 數據庫
select id from t where num is null
能夠在num上設置默認值0,確保表中num列沒有null值,而後這樣查詢: 優化
select id from t where num=0
這就是爲何在設計數據庫的時候 要把全部字段都設置默認值,而不是null的緣由
spa
3、應儘可能避免在 where 子句中使用!=或<>操做符,不然將引擎放棄使用索引而進行全表掃描。
設計
4、應儘可能避免在 where 子句中使用 or 來鏈接條件,不然將致使引擎放棄使用索引而 進行全表掃描,如:code
select id from t where num=10 or num=20排序
能夠這樣查詢:索引
select id from t where num=10io
union allclass
select id from t where num=20
5、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
6、下面的查詢也將致使全表掃描:
select id from t where name like '%abc%'
若要提升效率,能夠考慮全文檢索。
7、應儘可能避免在 where 子句中對字段進行表達式操做,這將致使引擎放棄使用索引而進行全表掃描。如:
select id from t where num/2=100
應改成:
select id from t where num=100*2