我在甲骨文的性能上苦苦挣扎。情况是:子系统B有一个到主 DB A的 dblink 。在系统B上,查询在 15 秒后通过 dblink 完成,数据库计划使用适当的索引。
如果相同的查询现在应该在存储过程中填充表,Oracle 将使用另一个具有完整扫描的计划。无论我尝试什么(提示),我都无法摆脱这些完整扫描。那太糟了。
我能做些什么?
我在甲骨文的性能上苦苦挣扎。情况是:子系统B有一个到主 DB A的 dblink 。在系统B上,查询在 15 秒后通过 dblink 完成,数据库计划使用适当的索引。
如果相同的查询现在应该在存储过程中填充表,Oracle 将使用另一个具有完整扫描的计划。无论我尝试什么(提示),我都无法摆脱这些完整扫描。那太糟了。
我能做些什么?
Oracle 查询优化器尝试了 2000 种不同的可能性,并在正常情况下选择最佳的一种。但是如果您认为它选择了错误的计划,您可能会怀疑以下情况:
1- 不推荐使用属于查询表的直方图。
2-由于查询错误,您的索引无法使用。
3-您可以使用索引提示来强制使用索引。
4-您可以使用 SQL Advisor 或运行 TKProf 进行性能分析,并确定什么是错误的或导致性能不佳的原因。检查网络、磁盘 I/O 值等。
如果您分享您的查询,我们可以为您提供更多信息。
看起来我们没有在两种不同的条件下进行相同的查询。第一种情况是对 dblink 的简单选择,第二种情况是“插入为对 dblink 的选择”。
你能在这里分享两个查询和执行计划吗,因为你可以方便地使用它们。如果由于安全限制无法过去查询,请过去执行计划。
-阿比
经过多次尝试,我可以使用 Enterprise Manager 创建一个新的数据库计划。现在它运行完美。