我正在用 C# 编写一个应用程序,该应用程序将对本地和链接数据库(所有 Oracle 10g 及更新版本)执行查询,我想确保我了解在查询链接数据库时谁在做什么。
>例如,对于一个简单的查询,例如
SELECT * FROM FOO@DB_LINK
本地数据库服务器负责什么?我假设这将使用托管 DB_LINK
的数据库服务器上的 CPU、磁盘和内存,但是此查询对本地数据库服务器资源有什么影响?
如果查询稍微复杂一点怎么办,例如
SELECT * FROM FOO@DB_LINK F INNER JOIN BAR@DB_LINK B ON F.FOOBAR = B.FOOBAR
整个查询是在托管 DB_LINK
的服务器上执行的,还是在本地服务器上执行的 INNER JOIN
?如果 INNER JOIN
由本地数据库执行,它是否能够利用链接表上的索引(我不这么认为)?有没有办法告诉 Oracle 在链接的数据库上执行整个查询?
在我的应用程序中,我的查询将始终完全针对本地数据库或选定的链接数据库。换句话说,我永远不会有一个查询,我同时从本地和链接的数据库中获取数据,如
SELECT * FROM FOO F INNER JOIN BAR@DB_LINK B ON F.FOOBAR = B.FOOBAR
总结一下,
- 我只处理 Oracle 10g 或更新的数据库。
- 当查询(无论多么复杂)严格针对链接表时,本地数据库服务器负责什么?
- 有哪些方法(如果有)可以优化或向 Oracle 提供有关如何最好地执行此类查询的提示? (C# 中的示例会很棒)