Comment forcer Postgres à utiliser un index spécifié ?
P粉785905797
P粉785905797 2023-08-20 20:42:25
0
1
666
<p>Comment forcer Postgres à utiliser un index lorsqu'il insiste pour effectuer une analyse séquentielle ? </p>
P粉785905797
P粉785905797

répondre à tous(1)
P粉281089485

En supposant que vous posez des questions sur la fonctionnalité "indice d'index" commune dans de nombreuses bases de données, PostgreSQL ne fournit pas une telle fonctionnalité. Il s'agit d'une décision intentionnelle prise par l'équipe PostgreSQL. Un bon aperçu de pourquoi et de ce que vous pouvez faire peut être trouvé ici. La raison fondamentale est qu'il s'agit d'une méthode d'optimisation des performances qui a tendance à causer davantage de problèmes lorsque les données changent, et l'optimiseur de PostgreSQL peut réévaluer le plan en fonction des statistiques. En d’autres termes, ce qui pourrait être un bon plan de requête aujourd’hui n’est peut-être pas toujours un bon plan de requête, et les indications d’index imposent un plan de requête spécifique.

En tant qu'outil de test très brut, vous pouvez utiliser les paramètres enable_seqscanenable_indexscan. Voir :

Ceux-ci ne sont pas destinés à une utilisation en production soutenue . Si vous rencontrez des problèmes avec la sélection du plan de requête, vous devez consulter la docs pour le suivi des problèmes de performances des requêtes. Ne vous contentez pas de définir les paramètres enable_ et de partir.

À moins que vous n'ayez une très bonne raison d'utiliser un index, Postgres fera probablement le bon choix. pourquoi ?

  • Pour les petites tables, l'analyse séquentielle est plus rapide.
  • Postgres n'utilise pas d'index lorsque les types de données ne correspondent pas, vous devrez peut-être inclure les conversions appropriées.
  • Les paramètres de votre forfait peuvent causer des problèmes.

Voir également cet ancien message de newsgroup.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal