使我的存储过程更有效

时间:2012-01-04 11:26:40

标签: sql-server-2008

我已经为Select Query创建了一个存储过程,它工作正常。 但我需要一些更有效的方法来制作我的SP查询。 你有什么建议。

Create Procedure usp_SelectUserProfile
    @UserId int
As
Begin
     Select <column name> from DB where UserId = @UserId
End

日Thnx

3 个答案:

答案 0 :(得分:5)

我唯一能想到的是:

Create Procedure usp_SelectUserProfile
    @UserId int
As
Begin
     SET NOCOUNT ON;
     Select <column name> from DB where UserId = @UserId
End

禁止向客户端发送受影响的行数量,通过多次通话的小程序可以节省高达17%的通话时间

答案 1 :(得分:0)

您可以使用SET NOCOUNT ON

Create Procedure usp_SelectUserProfile
@UserId int
As
Begin
 SET NOCOUNT ON
 Select <column name> from DB where UserId = @UserId
End

请阅读此内容以获取更多详情http://msdn.microsoft.com/en-us/library/ms189837.aspx

答案 2 :(得分:0)

  1. 如果UserID不是主键,则在(UserID) INCLUDE (<column name>)
  2. 上创建新索引
  3. 使用架构Select <column name> from dbo.MyTable where UserId = @UserId限定所有对象引用。也可以在存储过程中使用它。如果没有这个,您将阻止计划重复使用
  4. 确保列UserId@UserId的数据类型和长度相同,以避免数据类型优先级和隐式转换
  5. 如其他答案所述,添加SET NOCOUNT:请参阅SET NOCOUNT ON usage