2012-01-04 71 views
1

我已經爲選擇查詢創建了一個存儲過程,並且它工作正常。 但是我需要一些更有效的方法來創建我的SP查詢。 你有什麼建議。使我的存儲過程更高效

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

日Thnx

+0

你真的有速度問題嗎?你可以做很多事情來改善這個查詢。如果UserId是PK,那麼它應該是一個簡單的索引查找。 – Blorgbeard 2012-01-04 11:34:40

回答

5

我可以想像這裏的唯一的事情就是:

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

禁止受影響的行量發送給客戶端,與許多電話小程序可以爲您節省高達17的通話時間%

+0

先生,如果我問,請問? (SET NOCOUNT ON;)基本上做什麼? – 2012-01-04 11:31:23

+0

抑制向客戶端發送受影響的行數量,對於有很多調用的小程序,它可以爲您節省多達17%的通話時間 – 2012-01-04 11:33:02

+0

17%具有奇怪的特定性 - 我有興趣閱讀您對此的任何參考 – Blorgbeard 2012-01-04 11:36:43

0
  1. 如果用戶名不是主鍵,然後創建(UserID) INCLUDE (<column name>)
  2. 一個新的索引與資格架構Select <column name> from dbo.MyTable where UserId = @UserId所有的對象引用。也可以在存儲過程中使用它。沒有這一點,你會阻止計劃再利用
  3. 確保列的數據類型和長度UserId@UserId是相同的,以避免數據類型的優先級和隱式轉換
  4. 添加SET NOCOUNT ON上其他答案提到:看到SET NOCOUNT ON usage