欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » SQLServer教程 » 正文

热门阅读

SQL基础教程及代码优化(四)

创建时间:2011年06月23日 21:36  阅读次数:(4601)
分享到:
存储过程、触发器、函数代码优化  
3.1.在触发器的开始处加入行数检验
–注意@@rowcount语句的位置

3.2.没有必要的行信息反馈
Set nocount on

3.3.尽早检查执行条件
–检查触发器触发条件
–检查进一步处理的前提条件

3.4.在进行相关表的更新(新增/修改/删除)时应进行资料存在性判断
–如果存在性判断过于复杂,也可以考虑在目的表建立约束或触发器维护

3.5.能够合并的相关表更新(新增/修改/删除)尽量合并,减少更新次数
–使用临时表存储中间结果,在处理完临时表结果后再更新实表

3.6.将事务时间控制到最短,事务应尽可能串行执行减少死锁
–在最靠近对实表发出DML语句出开始事务,在对实表发出DML语句后立即提交或回滚事务
  
3.7.变量重用
–过多的变量定义会轻微降低性能

3.8.临时表的使用
–集中创建临时表,显式删除临时表

3.9.游标的使用
3.10.多行处理
–通过分组技术
–借助临时表
–借助游标

3.11.视图与函数的选择
–将能够改造成视图的函数改造成视图或添加相应处理多行的视图

3.12.使用表变量
  
3.13.将复杂的SQL改成使用表变量或临时表分步处理

3.14.尽量少用嵌套触发器

3.15.使用sp_executesql代替exec

3.16.如果存储过程仅返回单个值,使用output参数比返回结果集要快

3.17.通常情况下使用连接比使用子查询快

3.18.尽量避免反复访问同一张或几张表,尤其是数据量较大的表,可以考虑先根据条件提取数据到临时表中,然后再做连接。
 
3.1触发器基本知识
3.1.1.SQL Server2005两种触发器选项
–DML触发器
–DDL触发器(New):审计及规范数据库操作

3.1.2.Instead of触发器和After触发器比较

3.1.3.inserted和deleted表

3.1.4.update()的使用 
  
3.2 SQL Server 2005游标
 
4种服务器游标类型:
–静态游标:游标打开时建立在tempdb中,打开后数据库中任何变化不会体现在游标中(除非关闭后重新打开)。静态游标是只读的。使用“Static”修饰。例如:
·静态游标将不会显示其打开以后再数据库中新插入的行,即使它们符合游标SELECT查询条件;
·静态游标仍会显示在游标打开以后删除的行;
·静态游标将仍然显示被修改行的原始数据。

–动态游标:当滚动游标时,反映结果集中所做的所有更改。使用“Dynamic”修饰。

–只进游标:不支持滚动,只支持从头到尾顺序提取。对所有影响结果集中行的insert、update、delete语句,其效果在这些行中提取时是可见的。但是,在行提取后对行的所做的修改对游标是不可见的。使用“Forward_Only”修饰。

–键集驱动游标:由一套被称为键集的唯一标识符控制。对非键集列中的数据值所做的更改,在用户滚动时是可见的。在游标外对数据库所做的插入在游标内是不可见的。使用“Keyset”修饰。V蟢L垊v抍 T 抍 T颯錘v^R v^R抍 TT剉 NL垝c Tz槒^ NI{嶯MRL垹R1
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 30+99=? 的结果(结果是:129)
结  果: