【发布时间】:2011-05-20 04:13:14
【问题描述】:
我有一个调用 Oracle 10g 数据库的 Borland builder c++ 6 应用程序。通过局域网操作。当有问题的应用程序进行简单的数据库选择时,例如
select table_name from element_tablenames where element_id = 10023842
Oracle 中记录了以下情况(来自性能日志)
select table_name
from element_tablenames
where element_id = 10023842
然后立即(不是来自 C++ 源代码,但可能更深入)
select table_name, element_tablenames.ROWID
from element_tablenames
where element_id = 10023842
select 语句仅在 TADODbQuery 对象中调用一次,但正在执行两个查询 - 一个用于解析,另一个添加 ROWID 用于执行。
通过 WAN 和很多很多查询,这对用户来说显然是个问题。
有谁知道为什么会发生这种情况,有人可以提出解决方案吗?
【问题讨论】:
-
返回的数据是否需要编辑? RowID 很可能是必需的,因为正在获取可编辑的数据集。
-
嗨,数据刚刚被读取。需要明确的是,第二条 SQL 语句不是由 C++ 代码发送的。只有第一个这样做..我假设 oracle 客户端或其他东西正在进行第二个 SQL 调用,因为它不是来自 c++ 源代码。 :)
-
我不了解Oracle,但是对于其他数据库,您可以添加“for read only”子句以提供更好的提示。
标签: c++ oracle ado c++builder