a. 應盡量避免全表掃描,首先應考慮在where及orderby涉及的列上建立索。
b. 應盡量避免在where子句中對字段進行null值判斷,避免使用!=或<>操作符,避免使用or連接條件,或在where子句中使用參數、對字段進行表達式或函數操作,否則會導致權標掃描
c. 不要在where子句中的“=”左邊進行函數、算術運算或其他表達式運算,否則系統將可能無法正確使用索引。
d. 使用索引字段作為條件時,如果該索引是復合索引,那么必須使用到該索引中的第一個字段作為條件時才能保證系統使用該索引,否則該索引將不會被使用。
e. 很多時候可考慮用exists代替in。
f. 盡量使用數字型字段。
g. 盡可能的使用varchar/nvarchar代替char/nchar。
h. 任何地方都不要使用selectfromt ,用具體的字段列表代替“”,不要返回用不到的任何字段。
i. 盡量使用表變量來代替臨時表。
j. 避免頻繁創建和刪除臨時表,以減少系統表資源的消耗。
k. 盡量避免使用游標,因為游標的效率較差。
l. 在所有的存儲過程和觸發器的開始處設置SETNOCOUNTON ,在結束時設置 SET NOCOUNTOFF。
m. 盡量避免大事務操作,提高系統并發能力。
n. 盡量避免向客戶端返回大數據量,若數據量過大,應該考慮相應需求是否合理。