我有一个动态存储过程,我想知道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之间是否存在任何性能问题? (即使它很少)。
提前致谢:)
答案 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)
没有区别,数据库引擎会忽略白色字符 - 仅作为分隔符处理。观察两种替代方案的查询计划,它们将是相同的。