我需要找到读取大型 OpenEdge 表(超过 1 亿行)的最快方法,最好以编程方式(在 c# 中)和 ETL 工具(如 SSIS)或暂存格式(如文本文件提取)之外。
我目前正在使用 ODBC(驱动程序:Progress OpenEdge 11.5)使用 OFFSET 和 FETCH 修饰符批量查询 OpenEdge 11.5 表
SELECT COL_1, COL_2
FROM PUB.TABLE_1
ORDER BY ROWID ASC
OFFSET {currentBatchStart} ROWS
FETCH NEXT {batchSize} ROWS ONLY
我正在通过带有FetchArraySize: 25
和的系统 DSN 进行查询QueryTimeout: -1
。我正在连接到一个 OpenEdge 服务器组,该服务器组设置为使用message buffer size: 1024
.
我发现性能很差(每 15 分钟大约有 100 万条记录),我怀疑在使用 OFFSET FETCH 修饰符时它只会在我通过表格时变慢。
我的问题是我可以采用任何方法或可以使用的设置来调整查询性能吗?
- 例如,有没有更好的方法来构建我的 SQL 查询?例如,我应该按索引中的列而不是 ROWID 排序吗?
- 我应该增加 sql server 组上的消息缓冲区大小吗
或者我应该寻找替代方法来从表中读取数据?
注意:每个批次随后都被sqlbulkcopy
编入一个 SQL Server 表中