我想在同一个查询中为不同的输入变量多次加入同一个表函数。但在我的情况下,这比使用表变量和分别从表函数中选择要慢得多。
我怎样才能避免表变量并且仍然有一个快速查询?
例如,我们有一个 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)
将包含四个表之间的连接之类的东西......