150 votes

Comment puis-je la force de Postgres pour l'utilisation d'un index particulier?

Comment puis-je la force de Postgres pour utiliser un index quand elle aurait par ailleurs insister sur le fait de faire un balayage séquentiel?

127voto

Patryk Kordylewski Points 1064

Comme un très émoussé marteau, utile pour les tests, vous pouvez utiliser l' enable_seqscan et enable_indexscan paramètres. Voir:

Ces sont pas adaptés pour la production en cours d'utilisation. Si vous avez des problèmes avec le plan de requête choix, vous devriez voir la documentation pour le suivi des problèmes de performances des requêtes. Ne vous contentez pas réglé enable_ params et à pied.

Sauf si vous avez une très bonne raison pour l'utilisation de l'index, Postgres peut-être faire le bon choix. Pourquoi?

  • Pour les petites tables, c'est plus rapide de faire des analyses séquentielles.
  • Postgres ne pas utiliser les index pour les types de données ne correspondent pas correctement, vous devrez peut-être inclure des moulages.
  • Votre planificateur de paramètres peuvent être à l'origine des problèmes.

Voir aussi ce vieux message de groupe de discussion.

101voto

Niraj Bhawnani Points 1

Probablement la seule raison valable pour l'utilisation de

set enable_seqscan=false

c'est quand vous êtes de l'écriture de requêtes et que vous voulez rapidement voir ce que le plan de requête serait en réalité ont été il y de grandes quantités de données dans la table(s). Ou bien sûr, si vous avez besoin rapidement de confirmer que votre requête n'est pas à l'aide d'un indice tout simplement parce que le jeu de données est trop petit.

4voto

J c Points 3498

J'ai utilisé les indicateurs d'index dans Oracle avant, mais il semble PostgreSQL favorise planificateur de requête d'optimisation au cours de cette fonctionnalité, voici un post que j'ai trouvé à discuter de certaines options:

Pouvez-vous donner Postgres les indicateurs d'index, comme vous pouvez le faire dans Oracle et Sybase?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X