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. 尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。