我们正在尝试将选择查询中的记录插入到临时表中,临时表中缺少一些记录。select 语句有多个连接和联合,所有这些都很少复杂的查询。简单来说,脚本包含 2 部分 第 1 部分 插入到临时表 第 2 部分 选择具有多个连接的查询、内联子查询、联合和按类和条件分组
例如。如果我们单独执行 select 语句,它会返回一些计数,例如 => 60000 插入临时表后,临时表中的计数在 42000 左右,为什么会有差异?
此外,我们还有其他一些观察。它只发生在第二次执行而不是第一次运行中。希望可能有一些缓存问题
我们得到了一个解决方案,一旦我们清除了会话缓存(检查点、刷新 shared_pool 和 buffer_cache),它就可以正常运行 Re_Run。
但是,我们不知道这个解决方案可以吗?以及如何在后台清除缓存和插入失败。如果是真的,我猜是配置设置错误。
代码看起来像 sql = "insert in to temptable select x,y,z,.... from xxx,abc,pqr..where...."; (逻辑但不真实非常复杂,大约 700 行,包含多个连接、内联子查询、分组依据等。) stmt = conn.createStatement(); rCount=stmt.executeUpdate(sql); 实际问题是 rCount = xxxx = Count(temptable) < count(select x,y,z,.... from xxx,abc,pqr..where....) 为什么会有这种差异?一些记录在选择中填充但未插入到临时表中
谁能解释一下?
预先感谢您的努力和帮助。
湿婆。