函数调用在where子句中的性能影响

时间:2017-03-20 14:41:10

标签: sql sql-server query-optimization

我有一个类似下面的SQL查询

SELECT * FROM dbo.table where ID IN (SELECT * from dbo.function())

dbo.function返回包含多行的单个列。表中没有索引,此函数从中获取值,因为该表中只有20行。

现在我担心的是我可以将SELECT * from dbo.function()放在复杂的连接语句中,还是应该创建一个表变量并调用函数一次来填充该表变量并在后续查询中使用它。

如果我在where子句中调用该函数,是否有任何性能影响?查询引擎是通过仅将函数的结果填充一次来优化查询还是单独调用每行的函数?

0 个答案:

没有答案