标签: sql tsql
我有一个where子句,它将两列与以下字符串进行比较。这个连接是否针对每一行运行?这个字符串(和连接)应该保留两次还是我应该创建一个变量来保存结果并在WHERE子句中使用它?
CONCAT('%', @myVar, 'dr')
答案 0 :(得分:1)
我在数据库中的测试表中检查了表达式的执行计划。该表有两个nvarchar(50)列,即firstname和fullname。
nvarchar(50)
firstname
fullname
我可以清楚地看到,即使我故意放置where子句中的三个AND条件,SQL Server引擎显示compute scalar步骤的0%成本。显而易见的是,无论您是为连接表达式创建单独的变量还是将其保留在where子句中,它都不会有任何区别。
AND
compute scalar
答案 1 :(得分:0)
创建一个变量来保存结果并在WHERE子句中使用它