我只是想知道在SQL Server中是否在这样的语句中:
SELECT A.Field1, dbo.someFunction(A.IdentifierID) As Field
FROM Table A WHERE A.IdentifierID = 1000
它会为表中的所有行调用someFunction,还是会调用一次?
谢谢!
答案 0 :(得分:3)
将为每行结果调用
答案 1 :(得分:1)
调用次数取决于结果行,即,如果查询100行的输出将被调用100次,而不是表中的所有行
但是如果它在where子句中,它将针对每一行进行评估
答案 2 :(得分:0)
将为每一行调用它,但由于您选择了一个特定的(或者看起来似乎如此),它将在您的示例中调用一次。
答案 3 :(得分:0)
正如vlad评论你应该试试看看。当然有两种选择:
但这可能不是正确的事......
我强烈怀疑#2。
答案 4 :(得分:0)
符合标准的SQL服务器应该出现,就像它们在应用SELECT子句之前应用WHERE子句一样。因此,对于满足WHERE A.IdentifierID = 1000
的每一行,它应该出现以最多评估一次该函数。
但数据库引擎可以随意优化,只要它们能够为您提供标准所需的相同结果。因此,在您的情况下,由于您选择了一个ID号,因此可能只需要对该函数进行一次评估。