t-sql - 重用 WHERE 子句中的字段值

标签 t-sql where-clause sql-server-2014

如何优化以下 T-SQL 的性能,以便仅调用一次 heavyFunctionCall 函数。

正在寻找表变量、临时表、CTE 或其他内容中最快的选项?

SQL:

select dbo.heavyFunctionCall(a, b, c) 
from T 
where dbo.heavyFunctionCall(a, b, c) > 10

最佳答案

这样做只会在每一行运行您的函数一次,而不是两次:

SELECT * 
FROM (
  SELECT dbo.heavyFunctionCall(a, b, c) AS x
  FROM T) a
WHERE x > 10

关于t-sql - 重用 WHERE 子句中的字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28694968/

相关文章:

sql - 选择所有列,但也可以按不同的列和最旧的日期选择

sql - 插入语句

c# - 创建 excel 表和输入 SQL 一起运行时不起作用?

sql-server - 将分区移动到新文件组

c# - 为什么 SQL Server 数据库用户写入错误的架构?

t-sql - 按行的出现次数分组

sql-server - T SQL - 从分组结果中获取附加数据

mysql - 有没有更好的方法来构建具有广泛 WHERE 条件的 MySQL 查询?

php - MySQL - 最严格的权限

sql - 右表的左连接与 where 子句(必须从右返回 NULL) - Oracle