Open jpm-cbna opened 8 months ago
Sur une seconde instance de la base de données dont la base Postgresql est hébergée dans un container Docker, la requête CTE "taxons" qui permet d'agréger les cd_nom ralentissait aussi la requête principale.
Au final, en découpant en 2 requêtes distinctes, c'est le plus rapide. Une première requête récupère les cd_nom à utiliser puis nous les injectons dans la seconde requête.
Sur l'Atlas du SINP AURA (23 millions d'observations), je constate des ralentissements sur la page "Espèce".
Après investigation, le ralentissement provient d'au moins 2 requêtes qui n'arrivent pas à utiliser l'index prévu
vm_observations_cd_ref_idx
:Voir les résultats du EXPLAIN pour la première (temps d'execution
5s 817ms
) et la seconde (temps d'execution5s 753ms
).Le problème est lié à la clause WHERE dont l'expression empêche l'utilisation de l'index
vm_observations_cd_ref_idx
.Pour résoudre ce souci, il faudrait plutôt utiliser des requêtes construites ainsi:
Voir les nouveaux résultats du EXPLAIN pour la première (temps d'execution
177ms
) et pour la seconde (temps d'execution276ms
).En modifiant ces deux requête, le délai d'attente de la réponse du serveur de la page passe de
~12s
à700ms
!