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