PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 22/04/2024 15:12:36

LudovicG
Membre

Optimiser par la baisse de la valeur de cost

Bonjour,


En voulant faire baisser la durée d'une requête SELECT, j'ai ajouté un index qui n'a rien changé (ou si peu) à la durée d'exécution mais qui a (environ) divisé par 2 le cost (valeur la plus grande trouvée sur la première ligne du EXPLAIN ANALYZE).


Naivement (et à défaut d'arriver à faire baisser la durée de la requête), je me dis que pour la même durée, arriver à baisser le cost, c'est bien.
Est-ce que je me trompe ?
Comment expliquer obtenir un meilleur cost sans gain sur la durée d'exécution ?


Ludovic

Hors ligne

#2 22/04/2024 17:18:22

Marc Cousin
Membre

Re : Optimiser par la baisse de la valeur de cost

Bonjour,

C'est un sujet un peu compliqué. Le coût estimé d'une requête, c'est vraiment quelque chose qui est estimé à la louche (en partant des statistiques sur les données). Faire baisser le coût, c'est un bon indicateur que c'est probablement mieux, mais pas une preuve absolue, loin de là, malheureusement. Par exemple si il y a une grosse erreur d'estimation (ce qui peut arriver pour plein de raisons… stats insuffisantes, paramètres de la requête un peu hors des valeurs types, nombreuses jointures qui empilent les erreurs d'estimations, etc…), le coût le moins élevé n'est pas forcément le meilleur. Mais bon, on va dire que par défaut, un moindre coût c'est mieux.

C'est pour ça qu'on a les options d'EXPLAIN comme ANALYZE, BUFFERS qui permettent de voir ce qui se passe lors d'une réelle exécution pour comparer

Si vous voulez vraiment comprendre le sujet, la doc explique pas mal de choses, et on trouve maintenant pas mal d'enregistrements de conférences, sur youtube par exemple, sur le sujet.


Marc.

Hors ligne

#3 23/04/2024 09:08:22

LudovicG
Membre

Re : Optimiser par la baisse de la valeur de cost

Merci pour votre retour.


Effectivement, j'ai déjà été confronté aux raisons invoquées ...
Pour mon cas, je disais diviser environ de moitié le cost général mais sur le nœud qui m'intéresse (la lecture d'une table précise sur lequel j'ai ajouté l'index), j'ai une baisse de 63 % (de 61241 à 22401).
Je vais me permettre de penser que c'est déjà pas mal smile


Ludovic

Hors ligne

Pied de page des forums