我有以下链接的CTE查询(简化):
;WITH CTE1
AS(
SELECT * FROM TableA
),
CTE2
AS(
SELECT * FROM TableB b INNER JOIN CTE1 c ON b.id = c.id
)
SELECT * FROM CTE2
如果我打破CTE链并将CTE1的数据存储到临时表中,那么整个查询的性能就会提高(从1分20秒提高到8秒)。
;WITH CTE1
AS(
SELECT * FROM TableA
)
SELECT * INTO #Temp FROM CTE1
;WITH CTE2
A
我看过关于如何在两个不同的SQL服务器上查询两个不同的表的所有参考资料,并且我理解它是如何实现的。但是,该命令似乎不适用于使用##创建的临时表。
如果我在一台服务器上编写联接,并且它引用了该服务器上的一个临时表和另一台服务器上的一个临时表,则SQL server假定因为##在命令中,所以它会自动查看本地服务器的tempdb,而不是远程服务器。我现在也不能使用OPENROWSET,因为该功能已被禁用,我必须获得批准才能重新打开它。
那么我的问题是,有没有一种方法可以重新配置这个命令,以识别要查看的tempdb?
SELECT *
FROM (##mytemptable1 Demog
INNE