`
lovnet
  • 浏览: 6906394 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

SQL Server 优化存储过程的七种方法

阅读更多

优化存储过程有很多种方法,下面介绍最常用的7种。

1.使用SET NOCOUNT ON选项

我们使用SELECT语句时,除了返回对应的结果集外,还会返回相应的影响行数。使用SET NOCOUNT ON后,除了数据集就不会返回额外的信息了,减小网络流量。

2.使用确定的Schema

在使用表,存储过程,函数等等时,最好加上确定的Schema。这样可以使SQL Server直接找到对应目标,避免去计划缓存中搜索。而且搜索会导致编译锁定,最终影响性能。比如select * from dbo.TestTable比select * from TestTable要好。from TestTable会在当前Schema下搜索,如果没有,再去dbo下面搜索,影响性能。而且如果你的表是csdn.TestTable的话,那么select * from TestTable会直接报找不到表的错误。所以写上具体的Schema也是一个好习惯。

3.自定义存储过程不要以sp_开头

因为以sp_开头的存储过程默认为系统存储过程,所以首先会去master库中找,然后在当前数据库找。建议使用USP_或者其他标识开头。

4.使用sp_executesql替代exec

原因在Inside Microsoft SQL Server 2005 T-SQL Programming书中的第四章Dynamic SQL里面有具体描述。这里只是简单说明一下:sp_executesql可以使用参数化,从而可以重用执行计划。exec就是纯拼SQL语句。

5.少使用游标

可以参考Inside Microsoft SQL Server 2005 T-SQL Programming书中的第三章Cursors里面有具体描述。总体来说,SQL是个集合语言,对于集合运算具有较高的性能,而Cursors是过程运算。比如对一个100万行的数据进行查询,游标需要读表100万次,而不使用游标只需要少量几次读取。

6.事务越短越好

SQL Server支持并发操作。如果事务过多过长,或是隔离级别过高,都会造成并发操作的阻塞,死锁。此时现象是查询极慢,同时cup占用率极低。

7.使用try-catch来处理错误异常

SQL Server 2005及以上版本提供对try-catch的支持,语法为:

begin try
----your code
end try
begin catch
--error dispose
end catch

一般情况可以将try-catch同事务结合在一起使用。

begin try
begin tran
--select
--update
--delete
--…………
commit
end try
begin catch
--if error
rollback
end catch

如需转载,请注明本文原创自CSDN TJVictor专栏:http://blog.csdn.net/tjvictor

分享到:
评论

相关推荐

    SqlServer存储过程及调试指南

    3. SQLServer存储过程调试方法:详细介绍了在SQLServer中如何使用异常处理来调试存储过程。异常处理是T-SQL脚本编程中的关键环节,SQLServer 2005引入了结构化异常处理特性,包括TRY...CATCH语句,使得异常处理更为...

    SQL Server中存储过程比直接运行SQL语句慢的原因

    在优化存储过程时,需要注意 Parameter sniffing 问题,可以通过使用 OPTION (RECOMPILE) 语句来解决这个问题。例如,原存储过程可以修改为: CREATE PROCEDURE [dbo].[pro_ImAnalysis_daily] @THEDATE VARCHAR(30)...

    SQLServer存储过程调用WebService

    ### SQL Server 存储过程中调用 WebService 的实现方法 #### 一、引言 在企业级应用开发中,Web Service 作为一种标准的接口技术,被广泛用于不同平台之间的服务交互。而在 SQL Server 数据库中直接调用 Web ...

    SQL Server 优化存储过程的七种方法.doc

    优化存储过程是数据库管理的重要环节,以下是从标题、描述和部分内容中提炼出的七个关键方法: 1. **使用SET NOCOUNT ON选项**: 当在存储过程中使用SELECT语句时,SQL Server默认会返回受影响的行数。通过设置SET...

    Sql Server 存储过程的导出导入.doc

    在SQL Server中,存储过程是一种预编译的SQL语句集合,它允许开发人员封装一组复杂的操作,并在需要时重复调用。存储过程对于数据库管理、数据处理和性能优化具有重要意义。本文主要介绍如何在SQL Server中导出和...

    sql server 2008 存储过程与储发器 详解 书籍

    在SQL Server 2008中,存储过程和触发器是数据库管理中不可或缺的重要组成部分,它们为数据库系统提供了更高级别的功能和控制。本篇将深入解析这两个概念及其在实际应用中的具体用法。 首先,存储过程是预编译的SQL...

    SQLServer数据库优化之50种方法

    ### SQL Server 数据库优化之50种方法 在IT领域,特别是对于数据库管理与优化方面,SQL Server作为一款广泛使用的数据库管理系统,其性能优化一直是DBA(数据库管理员)和技术团队关注的重点。本文将根据给定的信息...

    SQLServer 2000存储过程手册

    8. **优化存储过程**:通过索引、参数化查询和适当的查询优化,可以提高存储过程的执行效率。 9. **存储过程的调试**:SQL Server 2000提供了一些工具,如SQL Server Management Studio(SSMS),用于调试存储过程...

    oracle到sqlserver存储过程语法转换

    ### Oracle到SQL Server存储过程语法转换详解 在数据库迁移项目中,从Oracle迁移到SQL Server是一种常见的场景。本文旨在提供一份详细的指南,帮助开发者更好地理解这两种数据库系统在存储过程方面的语法差异,并...

    SQL Server存储过程对比工具

    SQL Server存储过程对比工具是一种高效且实用的软件解决方案,它专为数据库管理员和开发人员设计,用于比较和分析两个SQL Server数据库中的存储过程。这款工具的主要功能是帮助用户快速识别和定位不同数据库间存储...

    编写安全的SQL Server扩展存储过程

    在SQL Server中,扩展存储过程(Extended Stored Procedures)是一种增强数据库功能的方法,它允许开发者创建自己的函数、存储过程和数据类型,这些功能是通过Windows动态链接库(DLL)实现的。编写安全的SQL Server...

    sql Server 2005 存储过程视频

    在SQL Server 2005中,存储过程分为两种类型: 1. **系统存储过程**:由Microsoft提供,用于执行常见的数据库管理任务,如sp_help、sp_rename等。 2. **用户定义存储过程**:由数据库管理员或开发人员创建,根据...

    sqlserver的存储过程与 where in 多值参数

    本文将探讨在SQL Server中,存储过程与`WHERE IN`子句结合使用时,处理多值参数的几种方法。 **方法一:拼接SQL字符串并调用`EXEC`** 这是最简单也是最直观的方法。你可以在存储过程中接收一个包含多个值的参数,...

    sql server调用存储过程

    在SQL Server中,存储过程是一种预编译的SQL语句集合,可以视为数据库中的可重用函数,用于执行特定的任务。它们提供了许多优势,包括性能优化、代码复用、安全性增强以及减少网络流量等。本篇文章将深入探讨如何在...

    SQL Server 2000 存储过程与XML编程

    本书中,作者可能会深入讲解如何创建、调用和管理存储过程,包括使用T-SQL编写存储过程的语法,以及如何优化存储过程的性能。同时,也会详细介绍如何在SQL Server 2000中处理和存储XML数据,包括XML数据的插入、查询...

    sql server系统存储过程

    这些系统存储过程在SQL Server中扮演着核心角色,帮助管理员进行数据库维护、安全管理和性能优化。理解并熟练使用它们对于有效地管理SQL Server环境至关重要。在实际应用中,应根据具体需求选择合适的存储过程,并...

    hiberate SQL Server 2000 存储过程.pdf

    尽管在Hibernate中直接使用SQL Server 2000的存储过程会损失一定的数据库可移植性,但在某些情况下,使用存储过程可以带来性能优化、复杂业务逻辑处理以及安全性的提升。存储过程可以在服务器端执行,减少网络传输的...

    SQL Server 存储过程与实例

    除了利用缓存提升性能,还可以通过调整查询计划、合理设计参数、避免不必要的数据转换等方式优化存储过程的执行效率。 7. **存储过程的管理** 可以使用`ALTER`来修改已存在的存储过程,`DROP`来删除不再需要的...

    SQL SERVER 存储过程学习笔记

    在SQL Server中,存储过程是一种预编译的SQL语句集合,它允许开发人员封装一组数据库操作,并在需要时重复调用。存储过程是数据库管理中的一个重要概念,它提供了提高性能、安全性和代码重用的可能性。这篇学习笔记...

Global site tag (gtag.js) - Google Analytics