2014-03-28 36 views
0

我跑我的SQL Server有没有办法提高SQL Server和DB2之间ODBC连接的速度?

SELECT A.[STCOMP] 
    ,A.[STDATE] 
    ,A.[STUNM] 
    ,A.[STQTY] 
    ,A.[STWWAY] 
    ,A.[STVOID] 
    ,A.[STMATR] 
    ,A.[STTCKT] 
    ,C.[RWDESC] 
    ,A.[STDESC] 
    ,A.[STLNDF] 
    ,B.[CSLNAM] 
    ,B.[CBLNAM] 
    ,D.[CVAR6] 
FROM [EPAK].[B00BF4CR].[IWSE4S8].[SCTRN] AS A 
INNER JOIN [EPAK].[B00BF4CR].[IWSE4S8].[CUST] AS B ON A.[STNCST] = B.[CMSTC#] 
    AND A.[STNCMP] = B.[CMSTCO] 
    AND A.[STCOMP] = B.[CCMPNY] 
    AND A.[STCUST] = B.[CCUST#] 
INNER JOIN [EPAK].[B00BF4CR].[IWSE4S8].[SCRWC] AS C ON C.[RWRESW] = A.[STRWC] 
    AND C.[RWCOMP] = A.[STCOMP] 
INNER JOIN [EPAK].[B00BF4CR].[IWSE4S8].[CUSX] AS D ON A.[STCOMP] = D.[CCMPNY] 
    AND A.[STCUST] = D.[CCUST#] 
WHERE (
     A.[STDATE] = 20140211 
     AND A.[STVOID] = 'N' 
     ) 
ORDER BY A.[STTCKT] 

的数据是只有一天在此查询,它返回我的3000条记录,但采取52分钟做到这一点。 该查询正在使用odbc连接和我的sql之间的链接的DB2服务器之间提取数据。

+1

从SQL中不清楚,如果所有的表都是远程的 - 它们会查看哪些情况下整个查询应该发送到远程而不是本地执行。如果它在远程和本地之间被分割,那么你需要考虑哪个服务器要执行连接 - 对于所有连接有一点已知的提示,例如REMOTE。 INNER REMOTE JOIN - 指定远程执行连接 - 因此您可以故意将连接的较小一侧发送到较大的一侧。 – Andrew

+0

我做了你所建议的我,并且我收到了此消息消息7376,级别16,状态2,第1行 无法强制执行此查询的远程连接提示。当[STCOMP],A [STDATE],A。[STUNM],A。[STQTY],A。[STWWAY],A。[STVOID],A。[STMATR] ,A。[STTCKT],C。[RWDESC],A。[STDESC], – asfsdf

+0

看来这些都是远程表。尝试将数据带入本地#Temp表(限制你可以在哪里),然后查询这些数据。 – Steve

回答

0

您可以在DB2中创建一个包含所有连接和选择的视图。

然后您只需通过ODBC连接查询此视图。

问题是ODBC链接非常慢,并且一次返回一行。 您应该尽可能地减少通过链接发送的数据量。

相关问题