我想在同一个查询中使用相同的表函数连接多个输入变量。但是这在我的情况下比使用表变量和从表函数中分别选择要慢得多。使用表函数优化多个连接
如何避免表变量,仍然有一个快速查询?
例如,我们有像
SELECT P.ProjectName, A.Number, B.Number FROM Project AS P LEFT JOIN dbo.fn_ProjectNumber(@dateA) AS A ON P.ProjectID = A.ProjectID LEFT JOIN dbo.fn_ProjectNumber(@dateB) AS B ON P.ProjectID = B.ProjectID
一个SQL查询,但它是不是从功能选择分别为变量,再后来加入,例如要慢得多:
INSERT INTO @tempA SELECT P.ProjectID, A.Number FROM Project AS P LEFT JOIN dbo.fn_ProjectNumber(@dateA) AS A ON P.ProjectID = A.ProjectID INSERT INTO @tempB SELECT P.ProjectID, B.Number FROM Project AS P LEFT JOIN dbo.fn_ProjectNumber(@dateB) AS B ON P.ProjectID = B.ProjectID SELECT P.ProjectName, A.Number, B.Number FROM Project AS P LEFT JOIN @tempA AS A ON P.ProjectID = A.ProjectID LEFT JOIN @tempA AS B ON P.ProjectID = B.ProjectID
有什么事情是这个原因吗?有没有办法可以快速查询并避免表变量?
更多细节:
这仅仅是类似于我在做什么的例子,但功能fn_ProjectNumber(@date datetime)
将包含类似四个表之间的连接......
你不会给太多的信息继续下去。如何显示功能的代码,执行计划(SET SHOWPLAN_ALL ON)等... – 2009-09-29 14:04:20