Microsoft SQL Server/最佳实践
外观
- 始终用所有者限定对象。
- 当你不需要高事务一致性时,使用查询 "with (nolock)"。
- 不要使用 GOTO。
- 避免使用游标,因为它速度明显更慢。如果需要,始终声明正确的游标类型 (FAST_FORWARD)。
- 避免使用 SELECT INTO 来填充临时表。创建表然后使用 INSERT SELECT。
- 始终使用 ANSI 连接语法。
- 始终检查对象是否存在。
- 使用 SCOPE_IDENTITY() 而不是 @@IDENTITY。
- 始终检查 @@TRANCOUNT 并根据需要提交/回滚。
- 为了避免死锁,对 DML 进行排序。
- 始终检查 @@ERROR 和 @@ROWCOUNT,并将它们分配给变量。
- 始终检查 sp 返回值。
- 不要创建跨数据库依赖关系。
- 避免使用表值 UDF - 性能问题。
- 避免使用动态 SQL - 如果需要,使用 sp_executesql 代替 EXEC。
- 避免使用 NULL 值。
- 当只有两个值时,ISNULL 比 COALESCE 更有效。
- 始终指定列;尽量避免使用 "SELECT *"。例外情况包括以下两种情况:"WHERE EXISTS (SELECT * ...)" 和聚合函数。