Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server与Oracle链接的服务器-问题:选择*x选择列_Sql_Performance_Oracle_Linked Server - Fatal编程技术网

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

SQL Server与Oracle链接的服务器-问题:选择*x选择列,sql,performance,oracle,linked-server,Sql,Performance,Oracle,Linked Server,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分钟)。但是,如果我运行相同的s

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分钟)。但是,如果我运行相同的
select
,Oracle端只有一列:

select 
*
from openquery([SERVER],'
            SELECT
            COLUMN1
            FROM ORACLE_TABLE
            WHERE X>Y')
响应时间为17秒(10.000条记录)


有什么想法吗?

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

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

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


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

在Oracle上测试45列select似乎是合乎逻辑的。有两个变量的两个测试没有什么可学的。