6
votes

Améliorer la performance de la requête PostgreSQL

Lorsque vous exécutez cette requête sur mon serveur, c'est très lent et je ne comprends pas pourquoi. Quelqu'un peut-il m'aider à comprendre?
Query: xxx

expliquer analysez: xxx


4 commentaires

Combien d'enregistrements y a-t-il dans ces tables? L'indexation est-elle faite?


t_purs environ 600K enregistrements, T_DAT environ 9K. Les index sont définis dans t_purs.id, t_dat.t_key


Vous devez nous montrer les définitions de table et d'index. Diagnostiquer les requêtes lentes nécessite des définitions de table et d'index complètes, pas seulement une description ou une paraphrase. Peut-être que vos tables sont mal définies. Peut-être que les index ne sont pas créés correctement. Peut-être que vous n'avez pas d'index sur cette colonne que vous pensiez avoir fait. Sans voir la table et les définitions d'index, nous ne pouvons pas le dire.


En outre, il est tout à fait inutile de mettre votre nom de "colonne" et de "table" de guillemets.


3 Réponses :


8
votes

Il est difficile de dire ce que vous manquez exactement, mais si j'étais vous, je vous assurerais que l'index suivant existe: xxx pré>

pour t_purs code>, Créez cet index: P>

CREATE INDEX t_purs_created_p_id_idx
    ON t_purs (created, p_id);


2 commentaires

Hé, j'ai fait des changements dans les index et c'est maintenant une vitesse comme la lumière! Merci!!


Content de l'entendre. Ne sous-estimez pas la puissance des index composés! :)



1
votes

envisagez d'utiliser une colonne unique dans votre table: xxx

au lieu de (t_year, t_month, t_week, t_day) . Le type de données date occupe 4 octets. Cela rétrécirait un peu votre table, rendrait l'index plus petit et plus rapide et regroupant beaucoup plus facilement.

année , mois , week / em> et jour peut facilement et rapidement être extrait d'une date avec extrait () . Votre requête pourrait alors ressembler à ceci et serait plus rapide: xxx

plus important pour la performance est l'index, qui serait alors simplement: xxx < / Pré>

ou, en fonction de la distribution des données: xxx

La séquence de colonne compte. Vous pouvez même créer les deux.


0 commentaires

1
votes

Entrez la description de l'image ici

Votre requête est une analyse séquentielle sur t_purs et t_dat . La création des index appropriés vous aidera à rendre cette requête plus rapidement et à éviter les analyses séquentielles. xxx

exécuté expliquer analyser après avoir exécuté les deux requêtes ci-dessus. Vous verrez que le temps de plan et l'heure d'exécution seront réduits.


0 commentaires