2014-03-31 57 views
0

我有一個動態存儲過程,我想知道是否有任何性能問題,同時具有空格的nvarchar。有動態nvacrhar與空格時是否有任何性能問題?

這裏是一個代碼用於演示的問題 - 在我的存儲過程中我有很多其他操作是不相關的,也是我獲得動態nvarchar的方式不同。

DECLARE @Query NVARCHAR(255) 
CREATE #LocationStatus 
(
    LocationStatusID INT NOT NULL, 
    StatusID INT 
) 

--First Option: 
SET @Query = 'INSERT #LocationStatus 
       SELECT ID AS LocationStatusID, 
        StatusID 
       FROM dbo.CalculatedStatuses' 

--Second Option 
SET @Query = 'INSERT #LocationStatus SELECT ID AS LocationStatusID, StatusID FROM dbo.CalculatedStatuses' 

EXEC (@Query) 

在選項1到選項2之間是否存在任何性能問題? (即使它很少)。

感謝提前:)

+1

總是有性能問題。關鍵在於它是否可衡量(即使它可衡量,如果它會影響您的應用程序,或者您甚至不會注意到)。在你的情況下,國際海事組織沒有任何問題,但你有最後的話:衡量它,這不是我們/你可以猜測。 –

回答

1

從性能的角度來看,如果你使用當然MS SQL服務器,磁盤空間不是問題,但內存會。雙倍頁面讀取,雙倍索引大小,奇怪LIKE=恆定行爲等。

您是否需要存儲中文etc腳本?是或否?

A good article與Tony Rogerson,Joe Celko和Kalen Delaney。

而且從MS BLOG「Storage and Performance Effects of Unicode

堆棧溢出的問題,突出nvarchar性能有多糟糕:

SQL Server uses high CPU when searching inside nvarchar strings

+0

問題是關於查詢中的空格是否會影響查詢的性能,而不是查詢過程中的數據 –

0

不會有任何區別,白色的字符被數據庫引擎忽略 - 僅作爲分隔符處理。觀看兩種選擇的查詢計劃,它們將是相同的。

相關問題