Wie kann man Postgres dazu zwingen, einen bestimmten Index zu verwenden?
P粉785905797
P粉785905797 2023-08-20 20:42:25
0
1
650
<p>Wie zwinge ich Postgres, einen Index zu verwenden, wenn es darauf besteht, einen sequentiellen Scan durchzuführen? </p>
P粉785905797
P粉785905797

Antworte allen(1)
P粉281089485

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

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

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

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

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

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

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!