链接服务器查询的计数(*)不准确

lnlaulya  于 2021-07-27  发布在  Java
关注(0)|答案(1)|浏览(321)

我正在使用 OraOLEDB.Oracle 供应商。
当我运行这个查询时,我得到一个11990行的数据集:

SELECT * 
FROM OPENQUERY([ORA_LINK], 'SELECT * FROM DB1.MY_TABLE');

然而,这 COUNT(*) 查询返回值200,而不是11990:

SELECT COUNT(*) 
FROM OPENQUERY([ORA_LINK], 'SELECT * FROM DB1.MY_TABLE');

链接服务器或提供程序设置中是否有限制这一点的内容?
更新:如果我直接访问表,我会得到正确的计数:

SELECT COUNT(*) 
FROM [ORA_LINK]..[DB1].[MY_TABLE]

看来问题出在 OPENQUERY .

2nbm6dog

2nbm6dog1#

我猜这与默认的抓取大小有关
fetchsize—指定提供程序一次将获取的行数(获取数组)。它必须根据数据大小和网络的响应时间来设置。如果该值设置得太高,那么这可能会导致查询执行期间的等待时间更长。如果该值设置得太低,则可能会导致更多的往返数据库。有效值为1到429496和296。默认值为100。
1在sql server端对其进行材质分析

SELECT *
INTO #tmp
FROM OPENQUERY([ORA_LINK], 'SELECT * FROM MY_TABLE');

SELECT COUNT(*) FROM #tmp;

2运行 COUNT(*) 或甲骨文方面;

SELECT *
FROM OPENQUERY([ORA_LINK], 'SELECT COUNT(*) FROM MY_TABLE');

相关问题