【问题标题】:force Oracle to use indexes over DB-Link queries强制 Oracle 在 DB-Link 查询上使用索引
【发布时间】:2020-02-28 16:45:43
【问题描述】:
我使用数据库实例“A”上的存储过程将数据存储在 GTT 中。要获取原始数据,我必须通过 DB-Link 到数据库实例“B”。我将整个查询放在一起并将其发送到远程数据库实例。
这很好用。但有时,Oracle 似乎没有使用最佳方式或正确的索引进行查询。有没有办法强制 Oracle 使用特定的索引?我尝试使用提示,但老实说,我不明白所有这些选项之间的区别。
谢谢你帮助我!
【问题讨论】:
标签:
oracle
database-indexes
dblink
【解决方案1】:
当您希望查询以另一种方式工作时,以一种方式优化查询是一种巨大的诱惑。添加提示是一种临时解决方案,当表中数据的数量或类型发生变化时,或者当您使用更新的优化器升级到更新版本时,它可能会适得其反。
首先,确定有问题。所有查询都花费太长时间吗?一些?只有第一个?
最简单的做法是确保该表上的索引是最新的。然后通过使用explain plan feature 来优化查询以查看正在使用的索引。
检查您的数据以查看查询是否基于时间选择不同的事物或不同数量的记录也是谨慎的做法。