【发布时间】:2019-07-14 00:44:48
【问题描述】:
我正在开发一个使用 Oracle 作为数据库的 C++ 应用程序,并尝试获取数千条具有 CLOB 数据类型的记录。
一直在网上搜索如何在 OCCI 中预取 CLOB 数据类型,但总是看到“如果 LONG、LOB 或不透明类型列(例如 XMLType)是查询的一部分,则预取无效。”
OCCI 中是否有方法可以预取 CLOB,或者是否有其他替代解决方案可以缩短获取 CLOB 数据所花费的时间? 感谢您的帮助。
【问题讨论】:
我正在开发一个使用 Oracle 作为数据库的 C++ 应用程序,并尝试获取数千条具有 CLOB 数据类型的记录。
一直在网上搜索如何在 OCCI 中预取 CLOB 数据类型,但总是看到“如果 LONG、LOB 或不透明类型列(例如 XMLType)是查询的一部分,则预取无效。”
OCCI 中是否有方法可以预取 CLOB,或者是否有其他替代解决方案可以缩短获取 CLOB 数据所花费的时间? 感谢您的帮助。
【问题讨论】:
有一种方法可以做到这一点,我们大量使用它来优化跨 WAN 加载具有 CLOB 列的表
不是将数据作为 CLOB 列提取,而是将其转换为 varray(16) 的 varchar(32767)
select clob_to_str_array(clob_column) from table_name;
在这种情况下,OCCI 将返回vector < std::string >。通过这种方法,我们将加载时间从 15 分钟缩短到不到 10 秒
我认为这是我有史以来最好的优化之一,但我这样做只是因为避免 CLOB 为时已晚
【讨论】: