WHERE子句中常量值的最佳实践?

时间:2016-08-09 12:27:24

标签: sql tsql

我有一个where子句,它将两列与以下字符串进行比较。这个连接是否针对每一行运行?这个字符串(和连接)应该保留两次还是我应该创建一个变量来保存结果并在WHERE子句中使用它?

CONCAT('%', @myVar, 'dr')

2 个答案:

答案 0 :(得分:1)

我在数据库中的测试表中检查了表达式的执行计划。该表有两个nvarchar(50)列,即firstnamefullname

enter image description here

我可以清楚地看到,即使我故意放置where子句中的三个AND条件,SQL Server引擎显示compute scalar步骤的0%成本。显而易见的是,无论您是为连接表达式创建单独的变量还是将其保留在where子句中,它都不会有任何区别。

答案 1 :(得分:0)

创建一个变量来保存结果并在WHERE子句中使用它