首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从SQL Server到Oracle使用点表示法与OpenQuery

从SQL Server到Oracle使用点表示法与OpenQuery
EN

Stack Overflow用户
提问于 2019-05-03 04:43:12
回答 1查看 254关注 0票数 3

正在尝试将Oracle中的数据导入SQL Server。SQL定义了一个链接服务器。我需要过滤Oracle端的数据,因此有一个WHERE子句根据一列(时间段)的值限制数据。

使用两种不同的方法尝试性能: OpenQuery:

代码语言:javascript
复制
select * INTO T2 from OpenQuery(LinkedSrv,'select * from SCHEMA.TAB')

点符号(LinkedServer..Schema.Table):

代码语言:javascript
复制
select * INTO T2 from LinkedSrv..SCHEMA.TAB

两者的执行速度都比较慢,大约每秒推送5-6k行。对于20M的行表来说,这并不理想。然后发现了一件相当有趣的事情:

代码语言:javascript
复制
select * INTO T2 from LinkedSrv..SCHEMA.TAB WHERE col >= Value

这将吞吐量推高到几乎100k行/秒

使用OpenQuery指定条件不会影响吞吐量。解释计划显示

代码语言:javascript
复制
RemoteQuery -> ComputeScalar -> Filter (WHERE) -> TableInsert in the dot notation scenario with WHERE.

除此之外,解释计划都是一样的。所以..。在本地添加WHERE子句(因为它就是这样做的)如何将吞吐量提高10倍?

..。在使用OpenQuery时,我可以做些什么来实现(期望的结果)相同的快速吞吐量?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-05-03 05:30:52

点表示法和OpenQuery方法之间的不同之处在于,前者使用客户端游标引擎,大多数内容都是在本地计算的,而后者将查询发送到远程服务器并读取输出。

与OpenQuery方法相比,在点符号查询中过滤数据并不总是更快。它是基于每个本地和远程服务器的资源。

查看下面的堆栈溢出问题,他们将为您提供更多信息:

附加信息

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55959977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档