我尝试更改nestloop
set enable_nestloop=1
我看的时候
show enable_nestloop;
enable_nestloop
-----------------
on
(1 row)
一切都好。但它没有效果。
如果在配置文件中更改此参数然后从cli重新加载配置,则一切正常。
为什么设置对我不起作用?
答案 0 :(得分:0)
enable_nestloop
是一个测试参数。它默认打开,这就是为什么打开它没有效果。它就在那里你可以把它关闭告诉查询计划者“请不要使用嵌套循环,除非你没有其他方法来执行这个查询”。它通过强制嵌套循环的成本估算非常高来实现这一点。
这是不一个查询提示,您可以用来说“请为此查询使用嵌套循环”。它不会那样工作。
强烈建议您不将这些测试参数用于生产用途。现在强迫计划可能会在以后产生不幸的后果。如果可能,请使用random_page_cost
和effective_cache_size
等费用参数来指导规划人员自行选择最合适的计划。
如果绝对必须在您的应用中使用这样的参数,请使用SET LOCAL
在一次交易中设置它们。
无法为单个语句设置它们,然后自动取消设置它们。这部分是因为它们并不意味着以这种方式使用。它们被设计为而不是作为查询提示。