Heim  >  Fragen und Antworten  >  Hauptteil

Wie kann man Postgres dazu zwingen, einen bestimmten Index zu verwenden?

<p>Wie zwinge ich Postgres, einen Index zu verwenden, wenn es darauf besteht, einen sequentiellen Scan durchzuführen? </p>
P粉785905797P粉785905797426 Tage vor627

Antworte allen(1)Ich werde antworten

  • P粉281089485

    P粉2810894852023-08-21 18:52:40

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

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

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

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

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

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

    Antwort
    0
  • StornierenAntwort