将一些复杂的报告sprocs移至中央服务器,时间从5秒到30秒以上。
通过以下方式验证需要花费的时间:
print '04 NWA Raw data Numeric'
print datediff(ss, @now, getdate())
set @now = GETDATE()
我试图仅通过这些查询提取本报告所需的内容:
10秒内1355行----
select *
into #nwaDump
from [Phoenix].[NWA].dbo.QISDataNumeric
where rowguid in (
select rowguid from [Phoenix].[NWA].[dbo].[QISDataText] nd
where nd.DataValue in ( '41310291 ' )
)
28秒内249行
select *
into #nwaText
from [Phoenix].[NWA].[dbo].[QISDataText] td
where td.DataValue in ( '41310291 ' )
在其他服务器上运行相同的两个查询< 1秒返回时间。
有什么想法吗?
答案 0 :(得分:1)
您可以尝试使用OPENQUERY
,因为它应该在链接服务器上创建过滤器,然后将它们拉到其他服务器:
SELECT *
INTO #nwaText
FROM OPENQUERY(Phoenix,'SELECT * FROM [NWA].[dbo].[QISDataText]
WHERE DataValue in ( ''41310291 '' )')