1

当您为 Oracle 编写相当复杂的 SQL 时,迟早您将不得不应用奇怪的执行提示,因为 Oracle 似乎无法自己找出“最佳”执行计划。

http://download.oracle.com/docs/cd/B19306_01/server.102/b14211/hintsref.htm

现在这肯定不是 SQL 标准。但是,我仍然想知道,是否有任何其他 RDBMS 支持这些类型的提示,我的意思是“嵌入”在 SQL 中的提示?它们在句法上是否相似(即也位于SELECT关键字和第一个 selected之间COLUMN)?您知道比较各种 RDBMS 中的提示的通用文档页面吗?

注意:我对这些 RDBMS 最感兴趣:Postgres、MySQL、HSQLDB、H2、Derby、SQLite、DB2、Sybase、SQL Server

4

3 回答 3

2

我知道在 db2 中,计划是以某种方式固定的,而不是如何固定的。在 Oracle 11g 中,除了向查询添加提示之外,还有其他选项。这些是 SQLProfiles 和 SQLPlan Baselines,两者都非常强大。相反,我刚刚完成了一个性能调整项目,我们甚至没有在代码中添加任何提示。

于 2011-03-10T18:46:59.800 回答
1

您可以将Oprimizer 提示添加到任何 SQL Server 查询

PLAN 子句允许您为 Firebird 中的查询定义一个特定的计划。

AFAIK,没有标准也没有接近它,但总的来说,你可以在很多 RDBM 中做到这一点,但不是全部。

于 2011-03-10T18:52:33.323 回答
1

我还要提醒您,如果您要与其他数据库平台进行某种比较,Oracle 中的提示完全不具有约束力。也就是说,如果 Oracle 愿意,它可以自由地忽略您的提示。

提示可能会有所帮助,但我发现我很少再使用它们了——至少与过去在早期 Oracle 版本中使用旧优化器时相比没有。与现在相比,当时的提示更多地是性能调优的主要内容。

于 2011-03-10T19:11:18.567 回答