优化此 SQL 查询以提高性能

Dee*_*ons 4 sql-server stored-procedures

我正在尝试优化以下语句:

'VI'+CAST(month(GETDATE()) AS NVARCHAR)+'/'+CAST(year(GETDATE()) AS NVARCHAR)
+'/00000' +CAST(@number+1 AS VARCHAR)
Run Code Online (Sandbox Code Playgroud)

该语句产生的值等VI1/2011/000002,如果该@number参数1

我想在删除多余的强制转换语句和提供连接字符串和整数的有效方法方面对此进行优化。

gbn*_*gbn 8

根本没有捷径,SQL Server 中没有优雅的字符串串联

不过,您正在混合 varchar 和 nvarchar:数据类型优先级意味着整个表达式将是 nvarchar。


Bre*_*zar 7

如果您发现自己经常在选择数据时执行此转换,请尝试改用持久计算字段。它被添加到表中,每当插入或更新数据时,SQL Server 都会自动计算它。您只需支付一次计算惩罚,然后每当数据被选回时,CPU 就会减少。如果您发现自己使用该字段过滤查询,您甚至可以在其上放置索引。