我的团队使用 Oracle 11 和 SQL Developer。我最近一直在很大程度上依赖于解释计划来尝试确定解决各种问题的最有效方法。最近,一位同事指出,解释计划并不总是准确反映数据库中实际发生的情况,自动跟踪是更好的指示,因为查询实际上是针对数据运行的。
测试查询,我得到以下结果
_________________________________
| Method | Cost |
|--------------------|----------|
| Query A Explain | 306,188 |
| Query A Autotrace | 399,131 |
| Query B Explain | 99,226 |
| Query B Autotrace | 137,661 |
|____________________|__________|
Run Code Online (Sandbox Code Playgroud)
使用自动跟踪时,查询 A 的成本增加了 30%,查询 B 的成本增加了近 40%。显然,我应该在这两种情况下都使用查询 b,但我不明白是什么导致它们不同。