Je sollicite votre aide pour l'optimisation d'une requête plpgsql
Cette requête affiche les personnes d'une région avec leur nombre d'enfants.
C'est une requête dynamique et très longue je ne peux pas la mettre sur ce post et je m'en excuse.
Actuellement le temps d'exécution de cette requête est de 2,375 sec avec un affichage par page limité à 10 personnes .
J'ai trouvé ce temps très long. J'ai donc fait un EXPLAIN ANALYSE de cette fonction et voici les résultats.
Si je comprends bien cette analyse, la requête scan 1000 lignes ???
Code : Sélectionner tout - Visualiser dans une fenêtre à part Function Scan on fonc_membre_region (cost=0.00..12.50 rows=1000 width=532) (actual time=2378.003..2378.013 rows=10 loops=1)
J'ai essayé de comprendre pour quoi et je me suis rendu compte que j'ai un critère sur le nombre d'enfants qui se présente comme ça :
la requête est plus rapide lorsqu'elle exécute :
Code : Sélectionner tout - Visualiser dans une fenêtre à part WHERE membre_nombre_enfant >=0
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part WHERE membre_nombre_enfant =0ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part WHERE membre_nombre_enfant =3Comment selon vous optimiser la requête quand on utilise un critère ">="
Code : Sélectionner tout - Visualiser dans une fenêtre à part WHERE membre_nombre_enfant >=3
ou BETWEEN
Code : Sélectionner tout - Visualiser dans une fenêtre à part WHERE membre_nombre_enfant >=0
C'est cette fourchette qui est consommatrice de ressource et de temps.
Code : Sélectionner tout - Visualiser dans une fenêtre à part WHERE membre_nombre_enfant BETWEEN 0 AND 4
Merci à tous
Partager