【发布时间】:2016-05-16 19:24:31
【问题描述】:
我在 postgres 上运行了一个巨大的查询,其中一个连接表总是进行顺序扫描。约束列上有一个索引,而 postgres 只是没有使用它。我运行了VACUUM ANALYZE,然后 postgres 查询计划表明现在正在使用索引扫描。
我的问题是,运行VACUUM ANALYZE 的最有效方法是什么?它会锁定表吗?如果是这样,您如何在实时生产表上运行VACUUM ANALYZE?
【问题讨论】:
-
and one of the join tables always did a sequential scan. The index on the column exists and postgres just didn't use it.这与 VACUUM 无关。 -
也许是无关的。但在我进行真空分析后,计划发生了变化。如果您能提出一个更有意义的答案,而不是说出与它无关的内容,那将会更有帮助。
-
是的,VACUUM ANALYZE 会更新统计信息,这可能会导致选择另一个计划。通常,这仅在表发生更改时才重要(例如,通过添加索引或将新数据导入新表)(对不起:我忽略了分析部分)
标签: sql postgresql vacuum