mssql sqlserver使sql脚本高效的注意事项


摘要:
下文将分享使sql高效的注意事项,如下所示:


一、索引注意事项

1.未在检索列上应用索引、I/O 吞吐量不足导致死锁情况发生
2.统计信息异常,导致采用错误的执行计划
3.强制指定索引(hint)随着数据的变化,使系统使用了”非最优的”执行计划
4.在索引列上采用了函数,使无法应用索引,例: where dbo.fn_test(列名) >100

二、游标注意事项

1.使用游标时,尽量使用只读游标
2.避免游标的频繁开关,导致资源的大量消耗
3.避免数据行数过多时,使用游标

三、临时表同表变量

1.表变量无法回滚
表变量无法受事务管理,但是写入效率比临时表高
sqlserver无法为表变量生成统计信息,所以当数据量非常大时,禁止使用表变量(因为sql引擎无法生成最优查询计划)
2.表变量的作用范围需要特别注意

四、其它注意事项

1. 整个数据库中,表示相同信息的字段,需使用相同字段名和相同的数据类型–包括函数 存储过程 中都必须使用相同的类型,
避免出现隐式转换,消耗系统性能(特别需注意的为:字符转数值类型 字符转日期类型)
2.在脚本运行中,使用set nocount on 可减少网络传输的大小
3. 避免使用select *
4.避免大事务操作
5.严格控制select 查询语句单次返回的行数
6.减少子查询的编写
7.减少动态拼接sql脚本