PostgreSQL 9.2 set enable_nestloop无效

时间:2015-09-17 09:46:00

标签: postgresql postgresql-9.2

我尝试更改nestloop

set enable_nestloop=1

我看的时候

show enable_nestloop;
 enable_nestloop 
-----------------
 on
(1 row)
一切都好。但它没有效果。 如果在配置文件中更改此参数然后从cli重新加载配置,则一切正常。 为什么设置对我不起作用?

1 个答案:

答案 0 :(得分:0)

enable_nestloop是一个测试参数。它默认打开,这就是为什么打开它没有效果。它就在那里你可以把它关闭告诉查询计划者“请不要使用嵌套循环,除非你没有其他方法来执行这个查询”。它通过强制嵌套循环的成本估算非常高来实现这一点。

这是一个查询提示,您可以用来说“请为此查询使用嵌套循环”。它不会那样工作。

强烈建议您将这些测试参数用于生产用途。现在强迫计划可能会在以后产生不幸的后果。如果可能,请使用random_page_costeffective_cache_size等费用参数来指导规划人员自行选择最合适的计划。

如果绝对必须在您的应用中使用这样的参数,请使用SET LOCAL在一次交易中设置它们。

无法为单个语句设置它们,然后自动取消设置它们。这部分是因为它们并不意味着以这种方式使用。它们被设计为而不是作为查询提示。