Oracle风格的执行提示

时间:2011-03-10 17:46:08

标签: oracle rdbms sql-execution-plan optimizer-hints

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

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

现在这肯定不是SQL标准。但是,我还在想,是否还有其他任何支持这类提示的RDBMS,我真的是指在SQL中“嵌入”的提示?它们在语法上是相似的(即也放在SELECT关键字和第一个选定的COLUMN之间)?您是否知道比较各种RDBMS中的提示的一般文档页面?

N.B:我最感兴趣的是这些RDBMS:Postgres,MySQL,HSQLDB,H2,Derby,SQLite,DB2,Sybase,SQL Server

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

PLAN clause允许您在Firebird中为查询定义特定计划。

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

答案 2 :(得分:1)

我还提醒您,如果您与其他数据库平台进行某种比较,那么Oracle中的提示完全没有约束力。也就是说Oracle如果选择的话可以自由地忽略你的提示。

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