1,尽量利用一些sql语句来替代一些小循环,例如聚合函数,求平均函数等。
2,不再按照算法描述,以致将一条长达100多个字段的纪录分90次来更新,而是采用拼凑语句,将更新语句在循环中拼凑后,再统一更新。
3,使用确定的schema, 在使用表,函数,存储过程等等时,最好加上确定的schema,这样可以使sqlserver直接找到对应目标,避免去计划缓存中搜索,而且搜索会导致编译锁定,最终影响性能。如select * from dbo.a比select * from a要好。
4,自定义存储过程不要以_sp开头。因为以_sp开头的存储过程默认为系统存储过程,所以首先会去master库中去找,然后再在当前数据库中找。
5,使用sp_executesql替代exec. sp_executesql可以使用参数化,从而可以重用执行计划。而exec就是纯拼sql语句。
6,中间结果存放于临时表,加索引。
7,少使用游标。sql是个集合语言,对于集合运算具有较高性能。而cursors是过程运算。比如对一个100万行的数据进行查询。游标需要读表100万次,而不使用
游标则只需要少量几次读取。
8,事务越短越好。sqlserver支持并发操作。如果事务过多过长,或者隔离级别过高,都会造成并发操作的阻塞,死锁。导致查询极慢,cpu占用率极地。
9,使用try-catch处理错误异常。
10,查找语句尽量不要放在循环内。
网友评论