使用带空格的动态nvarchar时是否存在任何性能问题?

时间:2014-03-31 09:26:05

标签: sql-server performance tsql stored-procedures dynamic

我有一个动态存储过程,我想知道nvarchar是否有空格时是否存在任何性能问题。

这是一个代码用于演示的问题 - 在我的商店程序中,我有许多其他不相关的操作,以及我获得动态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之间是否存在任何性能问题? (即使它很少)。

提前致谢:)

2 个答案:

答案 0 :(得分:1)

从性能角度来看,如果你当然使用MS SQL Server,磁盘空间不是问题,但是内存。双页读取,双索引大小,奇怪LIKE=常量行为等。

你需要存储中文等脚本吗?是或否?

与Tony Rogerson,Joe Celko和Kalen Delaney一起good article

来自MS BLOG" Storage and Performance Effects of Unicode"

堆栈溢出问题,突出显示nvarchar性能有多糟糕:

SQL Server uses high CPU when searching inside nvarchar strings

答案 1 :(得分:0)

没有区别,数据库引擎会忽略白色字符 - 仅作为分隔符处理。观察两种替代方案的查询计划,它们将是相同的。