zoukankan      html  css  js  c++  java
  • 改善SQL Procedure性能的几点方法

    1. 增加 SET NOCOUNT ON 语句,较少不必要的还回数据件数:

    CREATE PROC dbo.ProcName
    AS
    SET NOCOUNT ON;
    --Procedure code here
    SELECT column1 FROM dbo.TblTable1
    -- Reset SET NOCOUNT to OFF
    SET NOCOUNT OFF;
    GO
     
    2.用   [数据库名]dbo.[表] 代替 表。 DBServer查找数据表的时间
    SELECT * FROM dbo.MyTable -- Preferred method
    -- Instead of
    SELECT * FROM MyTable -- Avoid this method
    --And finally call the stored procedure with qualified name like:
    EXEC dbo.MyProc -- Preferred method
    --Instead of
    EXEC MyProc -- Avoid this method
     
    3. 在Procedure Name不使用 ”sp_”, 以sp_开头的StoredProcedure通常
    会master database 中去寻找。加重代码执行。
     
    4.多用IF EXISTS(SELECT * FROM TableA), 而不是直接用SELECT * FROM TableA
    极大的加快代码执行效率
    IF EXISTS (SELECT 1 FROM sysobjects
    WHERE name = 'MyTable' AND type = 'U')
     
    5.尽可能用sp_executesql Procedure,而不是用单纯的Execute语句(尤其是复杂执行语句)
    Execute 示例
    DECLARE @Query VARCHAR(100)
    DECLARE @Age INT
    SET @Age = 25
    SET @Query = 'SELECT * FROM dbo.tblPerson WHERE Age = ' + CONVERT(VARCHAR(3),@Age)
    EXEC (@Query)
     
    sp_executesql Procedure示例 
    DECLARE @Query NVARCHAR(100)
    SET @Query = N'SELECT * FROM dbo.tblPerson WHERE Age = @Age'
    EXECUTE sp_executesql @Query, N'@Age int', @Age = 25
     
    6.尽可能避免使用Cursor(占用较多的资源)
     
    7.尽可能保持Transaction 越短越好
     
    8.多用 TRY-Catch 进行错误判断
    BEGIN TRY
    --Your t-sql code goes here
    END TRY
    BEGIN CATCH
    --Your error handling code goes here
    END CATCH
     
     
    详细请参考
    http://blog.sqlauthority.com/2010/02/16/sql-server-stored-procedure-optimization-tips-best-practices/
     
    Love it, and you live without it
  • 相关阅读:
    xcode6新建pch文件过程
    系统提供的dispatch方法
    iOS 默认Cell选中
    sqoop部署
    maven自动化部署插件sshexec-maven-plugin
    spring-7、Spring 事务实现方式
    Spring-6.1、Java三种代理模式:静态代理、动态代理和cglib代理
    spring-6、动态代理(cglib 与 JDK)
    spring -3、spring 的 IOC与AOP
    Spring-2、Spring Bean 的生命周期
  • 原文地址:https://www.cnblogs.com/tomclock/p/6226224.html
Copyright © 2011-2022 走看看