繁体   English   中英

具有Oracle的SQL Server链接服务器-问题:选择* x选择列

[英]SQL Server Linked Server with Oracle - Issue: Select * x Select Columns

我在SQL SERVER 2008 R2上的OPENQUERY遇到性能问题:运行时:

select 
*
from openquery([LINKEDSERVER],'
            SELECT
            COLUMN1,COLUMN2,COLUMN3...(45 columns at all)
            FROM ORACLE_TABLE
            WHERE X>Y')

响应时间超过5分钟(是5分钟)。 但是,如果我在Oracle方面仅对一列运行相同的select

select 
*
from openquery([SERVER],'
            SELECT
            COLUMN1
            FROM ORACLE_TABLE
            WHERE X>Y')

响应时间为17秒(10.000条记录)。

有任何想法吗?

双方的等待事件是什么? 有哪些查询计划?

进程在等待网络流量吗? 如果是这样的话,那么大概45列数据将具有更多的数据要通过网络传输。 如果我们假设数据量增加了45倍,并且在较快的情况下经过的17秒中有7秒花费在网络流量上,那么从一列数据到45列数据将使网络等待事件的数量增加7秒* 44列= 308秒。 因此,如果没有更多信息,将通过网络发送的数据量增加45倍从17秒增加到5分钟似乎至少可能是合理的。

当然,如果您告诉我们column1是一个大图像,而其他44列是CHAR(1)列,每个列消耗一个字节,那么网络流量的增加将不是性能变化的合理解释。

column1索引? 如果是这样,当您要获取所有45列时,也许会有一个非常不同的计划。 也许第一个查询计划表明Oracle只需扫描一个小的覆盖索引,而第二个计划表明它必须进行更昂贵的表扫描。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM