您的位置:首页 > 数据库

SQLServer性能提高的方法(转)

2009-01-04 09:33 232 查看
1:不要在列上使用函数,可以在标量上使用函数

如 WHERE DATEADD(day, 15, OrderDate) = '07/23/1996'改成OrderDate = DATEADD(day, -15, '07/23/1996');

2:不要声明一个char变量去和nchar列去比较,相反nvarcha和varchar也一样,在比较的时候会隐式使用Convert函数,进而可能无法使用索引。

3:不必要的表不要join进来;尽量避免使用DISTINCT从句

4:select * 不仅会加大网络流量,而且更容易引起表扫描;使用where语句来限制你返回的行,对大结果集进行分页返回, 仅仅返回你需要的行和列

5:like后面不要跟前面是通配符的单词;像<>和not like等谓词尽量少用,尽量用IF EXISTS和IF NOT EXISTS来取代,这样可以使用索引

6:存储过程的好处:逻辑分离,把业务逻辑和数据处理逻辑分离;调整SQL语句不需要重新部署程序;减少网络带宽;提高安全性和集成性,可以给存储过程指派访问权限等[不确定是否可以];参数化查询可以防止SQL注入;防止查询计划重编译

7:游标的使用会反复提取行,加锁,管理锁,返回行等一系列操作,要用也尽量用只读向前游标,少用火线游标,它们会增加对tempdb的压力[不确定]。通常游标用来处理连续的行,如果这个表有主键,可以用一个while语句来取代游标的使用

8:事务在开始后会锁定资源以防止其他事务执行,所以要保持事务尽量短。可以在应用里开始一个事务,常用的做法是在开始事务前验证数据的有效性,当然在事务里也需要验证数据,但这已经避免了好多可能在事务里回滚的机会

9:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: