我想在同一个查询中为不同的输入变量多次加入同一个表函数。但在我的情况下,这比使用表变量和分别从表函数中选择要慢得多。
我怎样才能避免表变量并且仍然有一个快速查询?
例如,我们有一个 SQL 查询,如
选择 P.ProjectName、A.Number、B.Number
来自项目 AS P
左加入 dbo.fn_ProjectNumber(@dateA) 作为 A
ON P.ProjectID = A.ProjectID
左连接 dbo.fn_ProjectNumber(@dateB) AS B
ON P.ProjectID = B.ProjectID
但它比从函数中分别选择到变量中然后再加入要慢得多,例如:
插入@tempA
选择 P.ProjectID、A.Number
来自项目 AS P
左加入 dbo.fn_ProjectNumber(@dateA) 作为 A
ON P.ProjectID = A.ProjectID
插入@tempB
选择 P.ProjectID、B.Number
来自项目 AS P
左连接 dbo.fn_ProjectNumber(@dateB) AS B
ON P.ProjectID = B.ProjectID
选择 P.ProjectName、A.Number、B.Number
来自项目 AS P
左加入 @tempA 作为 A
ON P.ProjectID = A.ProjectID
左加入 @tempA 作为 B
ON P.ProjectID = B.ProjectID
这可能是什么原因?有没有办法可以快速查询并避免表变量?
更多细节:
这只是一个类似于我正在做的例子,但该函数fn_ProjectNumber(@date datetime)将包含四个表之间的连接之类的东西......