----start
在sql語句的where子句中應該盡量避免在字段上使用函式,因為這樣做會使該字段上的索引失效,影響sql語句的效能。即使該字段上沒有索引,也應該避免在字段上使用函式。考慮下面的情況:
現在要求你把2009.9.24註冊的使用者都查出來,怎麼辦?可能有人會這麼寫:
不過很遺憾,這個語句是錯誤的,因為registerdate是timestamp型別,而'2009-9-24'預設是date型別,型別不匹配。即然型別不匹配,很自然會想到利用函式進行型別轉換,因此,很自然會寫出下面的語句:
上述語句完全正確,但是假如registerdate欄位上有索引,那麼會使索引失效,即使沒有索引,也不應該這麼做。那麼到底如何處理呢?答案是將它轉化為範圍掃瞄,如下:
---更多參見:db2 sql 精萃
----last updated on 2009.9.24
----written by shangbo on 2009.9.24
----end
sql語句優化 盡量使用索引避免全表掃瞄 1
1.對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。2.應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃瞄,如 select id from t where num is null 可以在nu...
sql語句優化 盡量使用索引避免全表掃瞄 3
14.並不是所有索引對查詢都有效,sql是根據表中資料來進行查詢優化的,當索引列有大量資料重複時,sql查詢可能不會去利用索引,如一表中有字段 male female幾乎各一半,那麼即使在 上建了索引也對查詢效率起不了作用。18.盡可能的使用 varchar nvarchar 代替 char nch...
Sql語句查詢當天本週本月記錄的where條件
查詢當天 select from info where datediff dd,datetime,getdate 0 查詢24小時內的 select from info where datediff hh,datetime,getdate 24 info為表名,datetime為資料庫中的字段值 查...