如何强制Postgres使用指定的索引?
P粉785905797
P粉785905797 2023-08-20 20:42:25
0
1
660
<p>当Postgres坚持执行顺序扫描时,我如何强制它使用索引?</p>
P粉785905797
P粉785905797

全部回复(1)
P粉281089485

假设您询问的是许多数据库中常见的“索引提示”功能,PostgreSQL并不提供这样的功能。这是PostgreSQL团队做出的有意决定。关于为什么以及您可以做什么的很好的概述可以在这里找到。基本原因是,这是一种性能优化的方法,在数据发生变化时往往会导致更多的问题,而PostgreSQL的优化器可以根据统计数据重新评估计划。换句话说,今天可能是一个好的查询计划,但可能不会一直是一个好的查询计划,而索引提示则会强制使用特定的查询计划。

作为一种非常粗糙的工具,用于测试,您可以使用enable_seqscanenable_indexscan参数。请参阅:

这些不适用于持续的生产使用。如果您在查询计划选择方面遇到问题,您应该查看用于追踪查询性能问题的文档。不要只是设置enable_参数然后离开。

除非您有非常充分的理由使用索引,否则Postgres可能会做出正确的选择。为什么呢?

  • 对于小表来说,顺序扫描更快。
  • 当数据类型不匹配时,Postgres不使用索引,您可能需要包含适当的转换。
  • 您的计划设置可能会导致问题。

还请参阅这篇旧的新闻组帖子

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板