如何将 PLAN 与 UPDATE OR INSERT INTO 一起使用

How to use PLAN with UPDATE OR INSERT INTO

我正在使用 Firebird 2.5,遇到了一个我自己无法解决的问题。

有一个语句使用 UPDATE OR INSERT INTO。我想让它使用特定的执行计划。但是 - 无论我将 PLAN 放在哪里 - 我都会收到以下错误消息(行号因 PLAN 的位置而异):

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 2, column 5.
plan.

我没有在 corresponding documentation.

中找到任何关于 PLANUPDATE OR INSERT INTO 用法的信息

我的问题的各个方面:甚至可以一起使用它们吗?这是否有效或计划在更高版本的 Firebird 中工作?有没有明显的原因它不起作用,我没有看到?有哪些替代方案可以避免这种情况?

在 Firebird 2.5 中不可能这样做(在 3.0 中也不可能)。查看 parser definitionPLAN 子句仅支持:

对于 merge statement it should be possible to specify a plan for the source (if it is a select query), but not for the merge itself. The plan clause is not defined for update or insert(例如 insert 也不是)。

据我所知,没有计划将此添加到 Firebird 4。您应该考虑在跟踪器中添加改进票,但我不知道这是否可能。