Quels sont les moyens efficaces d'écrire des requêtes plus rapides spécifiquement à Postgres? Veuillez ne pas inclure généralement de bonnes pratiques de base de données (par exemple, les index d'utilisation ou la normalisation). Je cherche des astuces comme des tables dérivées fonctionnent plus rapidement que les sous-requêtes ou l'utilisation de fonctions Python String semble plus rapide que les fonctions de chaîne PGSQL. Idéalement, cette liste comprendrait des exemples et des conseils réels. P>
Merci. P>
3 Réponses :
Assurez-vous de sous-vide périodiquement. Le système AutoVacuum actuel fait un bon travail dans la plupart des cas dans la plupart des cas, mais il peut toujours être utile de faire fonctionner un vide manuel complet périodiquement (dans notre cas, cela se produit environ une fois par an). P>
Les index ne sont utilisés que de manière fiable si des statistiques sont disponibles pour la table. Assurez-vous qu'un vide --Analyze est exécuté après des modifications majeures à une table (tonnes d'inserts / suppresses) pour assurer que les index sont sélectionnés correctement. P>
La configuration Postgres par défaut est optimisée pour un système avec des ressources relativement modestes et des disques lents. Si votre système a des disques plus rapides (éventuellement), une CPU plus rapide (probablement) ou beaucoup plus de RAM (presque certainement), alors assurez-vous d'accorder les différents paramètres en fonction de cela. L'essentiel est d'augmenter la taille des tampons, mais si vous avez des disques extrêmement rapides (en particulier des SSDS), ce serait une bonne idée de réduire les estimations des coûts pour la recherche de fois. P>
J'ai également eu quelques expériences avec des jointures légèrement lentes dans des requêtes assez complexes, mais elles sont beaucoup plus difficiles à généraliser. Il est généralement préférable d'être plus explicites avec la requête que ce qui peut être nécessaire dans une DB avec un optimiseur de requête plus sophistiqué (par exemple, Oracle ou DB2). P>
Oui, j'ai remarqué que l'aspirateur automatique ne fonctionne vraiment pas trop bien avec les systèmes qui ont des charges de données importantes quotidiennes. Nous avons au moins "analyser" quotidiennement.
La seule règle incassable que j'ai trouvée jusqu'à présent est qu'il n'y a pas de règles incassables. P>
Parfois, la sous-requête est plus rapide, parfois rejoindre est plus rapide. Parfois, vous voulez PLPGSQL, parfois vous voulez d'autres pl /*. p>
Les conseils les plus adéquats les plus adéquats: p>
Checkout Tous les liens de cette page, puisque vous faites le réglage réel, il est préférable que vous sachiez quelles sont toutes les options que signifient et quand l'une d'entre elles s'applique à votre configuration. P>