數(shù)據(jù)庫系統(tǒng)設計:SQL設計和編程誤區(qū)
SQL編程中的潛在計算資源消耗要素:
排序操作,是否可使用索引的已排序特性?
類型轉換,是否設置了不恰當?shù)淖兞款愋?
函數(shù)調用,是否函數(shù)或表達式導致索引的失敗?
優(yōu)化器工作,統(tǒng)計是否正確以及優(yōu)化器
發(fā)現(xiàn)表、索引的低密度造成的IO、CPU問題
建議SQL編程規(guī)范
避免不必要的SQL(例:存在性測試)
減少返回的行(例:那些沒有where的SQL)
僅選擇必要的列(例:select *...)
單行返回和游標
避免排序(例:distinct、union)
使用索引數(shù)據(jù)排序(例:使用索引列排序或分組)
使用嵌入視圖
避免數(shù)據(jù)類型轉換(列和變量在類型、長度的比較)
在索引列上進行表連接
連接查詢的結果集避免在多(表)列上排序
小心使用like匹配,避免前l(fā)ike,可使用in替換?
盡量使用exist
避免使用NOt
避免在對比中在列上使用表達式(可能索引失效)
限制不必要函數(shù)使用(計算資源、索引限制),設計相關?