Vous n'êtes pas identifié(e).
Pages : 1
Bonjour à tous.
Je voudrais comprendre ce que représente vraiment le temps d'exécution quand on exécute une query dans pgadmin.
Par exemple "select 1" prend 53 ms. C'est forcément impossible
Une autre vraie query prend 60 ms mais quand je copie le EXPLAIN PLAN et que je le mets dans PEV (visualiser de plan d'exécution : https://tatiyants.com/pev/#/plans/new) alors je vois en résumé ceci :
SORT<1ms | NaN %
AGGREGATE<1ms | NaN %
INDEX SCAN<1ms | NaN %
Au total 3ms mais ce sont des temps indicatifs car le rapport de contient pas de durée d'exécution
Juste pour préciser tout est sur mon portable (core I7 et 32 gigas de mémoire).
Donc ma query c'est vraiment 60ms ou 3ms ? Ou autre chose ? Merci!
EXPLAIN PLAN:
[
{
"Plan": {
"Node Type": "Sort",
"Parallel Aware": false,
"Startup Cost": 8.47,
"Total Cost": 8.48,
"Plan Rows": 1,
"Plan Width": 20,
"Sort Key": [
"(count(1)) DESC"
],
"Plans": [
{
"Node Type": "Aggregate",
"Strategy": "Sorted",
"Partial Mode": "Simple",
"Parent Relationship": "Outer",
"Parallel Aware": false,
"Startup Cost": 0.42,
"Total Cost": 8.46,
"Plan Rows": 1,
"Plan Width": 20,
"Group Key": [
"redaction_place_code",
"adopt_adoption_type"
],
"Plans": [
{
"Node Type": "Index Scan",
"Parent Relationship": "Outer",
"Parallel Aware": false,
"Scan Direction": "Forward",
"Index Name": "test2_mm_idx",
"Relation Name": "reporting_doc",
"Alias": "reporting_doc",
"Startup Cost": 0.42,
"Total Cost": 8.45,
"Plan Rows": 1,
"Plan Width": 12,
"Index Cond": "((redaction_place_code = 24506) AND (adopt_adoption_type = 1))",
"Filter": "((establishing_date <= '2020-01-01'::date) AND (establishing_date >= '2021-12-31'::date))"
}
]
}
]
}
}
]
Hors ligne
L'interface de pgAdmin vous indique le temps global : de envoi de la requête à l'affichage du résultat. Cela peut fortement différer du seul temps d'exécution sur le serveur.
Quant à PEV, je vous le déconseille fortement. Aux dernières nouvelles, il n'est plus maintenu depuis une éternité. Et en plus, il vous raconte des bêtises. Le plan que vous lui avez fourni ne contient aucune information de durée (certainement parce que vous avez fait un EXPLAIN au lieu d'un EXPLAIN ANALYZE). Pour en revenir à votre question, il m'est impossible de dire combien de temps à durer l'exécution de la requête à partir de ce plan d'exécution. Il faudra réexécuter votre requête avec un "EXPLAIN ANALYZE" ou "EXPLAIN (ANALYZE)".
Pour en revenir à PEV, je vous conseille plutôt PEV2, qui est une reprise de PEV bien plus avancé et maintenu. Il est directement utilisable sur https://explain.dalibo.com/
Guillaume.
Hors ligne
Bonjour,
Le temps affiché par pgAdmin est le temps vu par le client entre le moment où la requête est envoyée et le moment ou le résultat est reçu (voire affiché). C'est à dire en comptabilisant les temps de transfert réseau (et peut être le temps d'affichage dans la grille). Les temps affichés dans l'explain sont les temps d'éxecution sur le serveur uniquement.
Julien.
https://rjuju.github.io/
Hors ligne
Merci à vous ! Génial ce forum.
Je viens de tester avec le ANALYZE et ma query met effectivement moins de 2ms ! Moi qui essayais de l'optimiser en croyant qu'elle mettait 60ms LOL
Hors ligne
Problème réglé
Hors ligne
Pages : 1