2 postgresql performance query-performance
多个连接的查询会在嵌套循环上花费大量时间。我禁用了嵌套循环,查询运行得更快。但是,有人告诉我,嵌套循环可能会跳过一些元组,从而给出错误的结果。这是真的?
使用诸如此类的调试参数enable_nestloop
不应更改查询的结果。如果确实如此,那通常是一个错误。
但是,您不应该enable_nestloop = off
在生产中使用或类似的。这是一把非常大的锤子,虽然它可能看起来可以解决您眼前的问题,但它会在其他地方造成性能问题。嵌套循环通常是在查询的一部分中获得最佳性能的正确计划节点,并且强制 PostgreSQL 更喜欢其他选项可能会使查询显着变慢。
相反,您通常应该调整成本参数,例如random_page_cost
鼓励 PostgreSQL 选择在您的硬件和工作负载上性能更好的计划。有关更多信息,请参阅 PostgreSQl wiki 和主文档中的调整建议。