如何将 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.
中找到任何关于 PLAN
和 UPDATE OR INSERT INTO
用法的信息
我的问题的各个方面:甚至可以一起使用它们吗?这是否有效或计划在更高版本的 Firebird 中工作?有没有明显的原因它不起作用,我没有看到?有哪些替代方案可以避免这种情况?
在 Firebird 2.5 中不可能这样做(在 3.0 中也不可能)。查看 parser definition,PLAN
子句仅支持:
对于 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。您应该考虑在跟踪器中添加改进票,但我不知道这是否可能。
我正在使用 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.
中找到任何关于PLAN
和 UPDATE OR INSERT INTO
用法的信息
我的问题的各个方面:甚至可以一起使用它们吗?这是否有效或计划在更高版本的 Firebird 中工作?有没有明显的原因它不起作用,我没有看到?有哪些替代方案可以避免这种情况?
在 Firebird 2.5 中不可能这样做(在 3.0 中也不可能)。查看 parser definition,PLAN
子句仅支持:
对于 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。您应该考虑在跟踪器中添加改进票,但我不知道这是否可能。